diff options
Diffstat (limited to 'stdlib/source')
46 files changed, 181 insertions, 175 deletions
diff --git a/stdlib/source/lux.lux b/stdlib/source/lux.lux index bb53b987e..f86d8cdae 100644 --- a/stdlib/source/lux.lux +++ b/stdlib/source/lux.lux @@ -3234,7 +3234,7 @@ (list module) (list& (substring2 0 idx module) (split-module (substring1 (i.+ 1 idx) module)))))) -(def: (at idx xs) +(def: (nth idx xs) (All [a] (-> Int (List a) (Maybe a))) (case xs @@ -3244,7 +3244,7 @@ (#Cons x xs') (if (i.= idx 0) (#Some x) - (at (i.- 1 idx) xs') + (nth (i.- 1 idx) xs') ))) (def: (beta-reduce env type) @@ -3279,7 +3279,7 @@ (#LambdaT (beta-reduce env ?input) (beta-reduce env ?output)) (#BoundT idx) - (case (at (_lux_proc ["nat" "to-int"] [idx]) env) + (case (nth (_lux_proc ["nat" "to-int"] [idx]) env) (#Some bound) bound @@ -3870,7 +3870,7 @@ num-ups (length ups)] (if (i.= num-ups 0) (return module) - (case (at num-ups (split-module-contexts module-name)) + (case (nth num-ups (split-module-contexts module-name)) #None (fail (Text/append "Can't clean module: " module)) @@ -4491,7 +4491,7 @@ lux (lux (control (monad #as M #refer #all)) (data (text #open (\"Text/\" Monoid<Text>)) - (struct (list #open (\"List/\" Monad<List>))) + (coll (list #open (\"List/\" Monad<List>))) maybe (ident #open (\"Ident/\" Codec<Text,Ident>))) meta @@ -4502,7 +4502,7 @@ lux (lux (control [\"M\" monad #*]) (data [text \"Text/\" Monoid<Text>] - (struct [list \"List/\" Monad<List>]) + (coll [list \"List/\" Monad<List>]) maybe [ident \"Ident/\" Codec<Text,Ident>]) meta @@ -4735,7 +4735,7 @@ [#;ExQ]) (#;BoundT idx) - (default type (list;at idx env)) + (default type (list;nth idx env)) _ type diff --git a/stdlib/source/lux/cli.lux b/stdlib/source/lux/cli.lux index a8604180b..410cd42d5 100644 --- a/stdlib/source/lux/cli.lux +++ b/stdlib/source/lux/cli.lux @@ -8,11 +8,11 @@ (lux (control functor applicative monad) - (data (struct (list #as list #open ("List/" Monoid<List> Monad<List>))) + (data (coll (list #as list #open ("List/" Monoid<List> Monad<List>))) (text #as text #open ("Text/" Monoid<Text>)) error (sum #as sum)) - (codata [io]) + [io] [compiler #+ with-gensyms Functor<Lux> Monad<Lux>] (macro [ast] ["s" syntax #+ syntax: Syntax]))) diff --git a/stdlib/source/lux/codata/struct/stream.lux b/stdlib/source/lux/codata/coll/stream.lux index 5691b0c69..eeee1ccc2 100644 --- a/stdlib/source/lux/codata/struct/stream.lux +++ b/stdlib/source/lux/codata/coll/stream.lux @@ -10,7 +10,7 @@ comonad) [compiler #+ with-gensyms] (macro ["s" syntax #+ syntax: Syntax]) - (data (struct [list "List/" Monad<List>]) + (data (coll [list "List/" Monad<List>]) bool) (codata [cont #+ @lazy Cont]))) @@ -59,11 +59,11 @@ [head a h] [tail (Stream a) t]) -(def: #export (at idx s) +(def: #export (nth idx s) (All [a] (-> Nat (Stream a) a)) (let [[h t] (cont;run s)] (if (n.> +0 idx) - (at (n.dec idx) t) + (nth (n.dec idx) t) h))) (do-template [<taker> <dropper> <splitter> <pred-type> <pred-test> <pred-step>] diff --git a/stdlib/source/lux/codata/cont.lux b/stdlib/source/lux/codata/cont.lux index 7f1b787e1..f04b6a0ba 100644 --- a/stdlib/source/lux/codata/cont.lux +++ b/stdlib/source/lux/codata/cont.lux @@ -9,7 +9,7 @@ (control functor applicative monad) - (data (struct list))) + (data (coll list))) (.. function)) ## [Types] @@ -42,11 +42,17 @@ (k a)) k))) +(def: #export (continue f thunk) + {#;doc "Forces a continuation thunk to be evaluated."} + (All [i o] + (-> (-> i o) (Cont i o) o)) + (thunk f)) + (def: #export (run thunk) {#;doc "Forces a continuation thunk to be evaluated."} (All [a] (-> (Cont a) a)) - (thunk id)) + (continue id thunk)) ## [Structs] (struct: #export _ (Functor Cont) diff --git a/stdlib/source/lux/compiler.lux b/stdlib/source/lux/compiler.lux index 367217524..9f667ebce 100644 --- a/stdlib/source/lux/compiler.lux +++ b/stdlib/source/lux/compiler.lux @@ -9,7 +9,7 @@ (control functor applicative monad) - (data (struct [list #* "List/" Monoid<List> Monad<List>]) + (data (coll [list #* "List/" Monoid<List> Monad<List>]) [number] [text "Text/" Monoid<Text> Eq<Text>] [product] diff --git a/stdlib/source/lux/concurrency/actor.lux b/stdlib/source/lux/concurrency/actor.lux index e55386d9d..73529e987 100644 --- a/stdlib/source/lux/concurrency/actor.lux +++ b/stdlib/source/lux/concurrency/actor.lux @@ -6,11 +6,11 @@ (;module: {#;doc "The actor model of concurrency."} lux (lux (control monad) - (codata [io #- run] - function) + [io #- run] + (codata function) (data [error #- fail] text/format - (struct [list "List/" Monoid<List> Monad<List>]) + (coll [list "List/" Monoid<List> Monad<List>]) [product] [number "Nat/" Codec<Text,Nat>]) [compiler #+ with-gensyms] @@ -154,7 +154,7 @@ (def: method^ (Syntax Method) (s;form (do s;Monad<Syntax> - [_ (s;sample! (' method:)) + [_ (s;this! (' method:)) vars (s;default (list) (s;tuple (s;some s;local-symbol))) [name args] (s;form ($_ s;seq s;local-symbol @@ -171,7 +171,7 @@ (def: stop^ (Syntax AST) (s;form (do s;Monad<Syntax> - [_ (s;sample! (' stop:))] + [_ (s;this! (' stop:))] s;any))) (def: actor-decl^ diff --git a/stdlib/source/lux/concurrency/atom.lux b/stdlib/source/lux/concurrency/atom.lux index ae8c7fa21..c879db02d 100644 --- a/stdlib/source/lux/concurrency/atom.lux +++ b/stdlib/source/lux/concurrency/atom.lux @@ -5,7 +5,7 @@ (;module: lux - (lux (codata [io #- run]) + (lux [io #- run] host)) (jvm-import (java.util.concurrent.atomic.AtomicReference V) diff --git a/stdlib/source/lux/concurrency/frp.lux b/stdlib/source/lux/concurrency/frp.lux index 45b9e1839..14563e534 100644 --- a/stdlib/source/lux/concurrency/frp.lux +++ b/stdlib/source/lux/concurrency/frp.lux @@ -9,9 +9,9 @@ applicative monad eq) - (codata [io #- run] - function) - (data (struct [list]) + [io #- run] + (codata function) + (data (coll [list]) text/format) [compiler] (macro ["s" syntax #+ syntax: Syntax])) diff --git a/stdlib/source/lux/concurrency/promise.lux b/stdlib/source/lux/concurrency/promise.lux index 1d33ee4ee..60cffe2fe 100644 --- a/stdlib/source/lux/concurrency/promise.lux +++ b/stdlib/source/lux/concurrency/promise.lux @@ -5,12 +5,12 @@ (;module: lux - (lux (data (struct [list #* "" Functor<List>]) + (lux (data (coll [list #* "" Functor<List>]) number text/format error) - (codata [io #- run] - function) + [io #- run] + (codata function) (control functor applicative monad) diff --git a/stdlib/source/lux/concurrency/stm.lux b/stdlib/source/lux/concurrency/stm.lux index 06912a25a..b088bd607 100644 --- a/stdlib/source/lux/concurrency/stm.lux +++ b/stdlib/source/lux/concurrency/stm.lux @@ -8,10 +8,10 @@ (lux (control functor applicative monad) - (codata [io #- run]) - (data (struct [list #* "List/" Functor<List>] - [dict #+ Dict] - ["Q" queue]) + [io #- run] + (data (coll [list #* "List/" Functor<List>] + [dict #+ Dict] + ["Q" queue]) [product] [text] maybe diff --git a/stdlib/source/lux/control/comonad.lux b/stdlib/source/lux/control/comonad.lux index 046511190..00d807ef1 100644 --- a/stdlib/source/lux/control/comonad.lux +++ b/stdlib/source/lux/control/comonad.lux @@ -6,7 +6,7 @@ (;module: lux ["F" ../functor] - [lux/data/struct/list #* "" Fold<List>]) + [lux/data/coll/list #* "" Fold<List>]) ## [Signatures] (sig: #export (CoMonad w) diff --git a/stdlib/source/lux/data/char.lux b/stdlib/source/lux/data/char.lux index 9c9baaf20..49c247f93 100644 --- a/stdlib/source/lux/data/char.lux +++ b/stdlib/source/lux/data/char.lux @@ -65,13 +65,13 @@ (or (n.= +4 size) (n.= +5 size))) (if (n.= +4 size) - (case (text;at +2 y) + (case (text;nth +2 y) #;None (#;Left (Text/append "Wrong syntax for Char: " y)) (#;Some char) (#;Right char)) - (case [(text;at +2 y) (text;at +3 y)] + (case [(text;nth +2 y) (text;nth +3 y)] [(#;Some #"\\") (#;Some char)] (case char #"t" (#;Right #"\t") diff --git a/stdlib/source/lux/data/struct/array.lux b/stdlib/source/lux/data/coll/array.lux index fa52df9f1..f95754262 100644 --- a/stdlib/source/lux/data/struct/array.lux +++ b/stdlib/source/lux/data/coll/array.lux @@ -12,7 +12,7 @@ eq fold) (data error - (struct [list "List/" Fold<List>]) + (coll [list "List/" Fold<List>]) [product]) )) diff --git a/stdlib/source/lux/data/struct/dict.lux b/stdlib/source/lux/data/coll/dict.lux index 3b153d229..fe77d0bea 100644 --- a/stdlib/source/lux/data/struct/dict.lux +++ b/stdlib/source/lux/data/coll/dict.lux @@ -8,8 +8,8 @@ (lux (control hash eq) (data maybe - (struct [list "List/" Fold<List> Functor<List> Monoid<List>] - [array #+ Array "Array/" Functor<Array> Fold<Array>]) + (coll [list "List/" Fold<List> Functor<List> Monoid<List>] + [array #+ Array "Array/" Functor<Array> Fold<Array>]) [bit] [product] text/format diff --git a/stdlib/source/lux/data/struct/list.lux b/stdlib/source/lux/data/coll/list.lux index 3228e1d78..9b0328b16 100644 --- a/stdlib/source/lux/data/struct/list.lux +++ b/stdlib/source/lux/data/coll/list.lux @@ -215,7 +215,7 @@ [every? true and] [any? false or]) -(def: #export (at i xs) +(def: #export (nth i xs) {#;doc "Fetches the element at the specified index."} (All [a] (-> Nat (List a) (Maybe a))) @@ -226,7 +226,7 @@ (#;Cons [x xs']) (if (n.= +0 i) (#;Some x) - (at (n.dec i) xs')))) + (nth (n.dec i) xs')))) ## [Structures] (struct: #export (Eq<List> Eq<a>) diff --git a/stdlib/source/lux/data/struct/queue.lux b/stdlib/source/lux/data/coll/queue.lux index 1c7fcdc3e..4dcac337c 100644 --- a/stdlib/source/lux/data/struct/queue.lux +++ b/stdlib/source/lux/data/coll/queue.lux @@ -6,7 +6,7 @@ (;module: lux (lux (control eq) - (data (struct [list "List/" Monoid<List>])))) + (data (coll [list "List/" Monoid<List>])))) ## [Types] (type: #export (Queue a) diff --git a/stdlib/source/lux/data/struct/set.lux b/stdlib/source/lux/data/coll/set.lux index 711ae4553..952e8f055 100644 --- a/stdlib/source/lux/data/struct/set.lux +++ b/stdlib/source/lux/data/coll/set.lux @@ -10,8 +10,8 @@ monad eq [hash #*]) - (data (struct [dict] - [list "List/" Fold<List> Functor<List>])) + (data (coll [dict] + [list "List/" Fold<List> Functor<List>])) (codata function))) ## [Types] diff --git a/stdlib/source/lux/data/struct/stack.lux b/stdlib/source/lux/data/coll/stack.lux index e62a74590..05364b832 100644 --- a/stdlib/source/lux/data/struct/stack.lux +++ b/stdlib/source/lux/data/coll/stack.lux @@ -5,7 +5,7 @@ (;module: lux - (lux (data (struct [list])))) + (lux (data (coll [list])))) ## [Types] (type: #export (Stack a) diff --git a/stdlib/source/lux/data/struct/tree/rose.lux b/stdlib/source/lux/data/coll/tree/rose.lux index 8620e46a7..4c4f873d5 100644 --- a/stdlib/source/lux/data/struct/tree/rose.lux +++ b/stdlib/source/lux/data/coll/tree/rose.lux @@ -7,7 +7,7 @@ lux (lux (control monad eq) - (data (struct [list "" Monad<List>])) + (data (coll [list "" Monad<List>])) [compiler] (macro [ast] ["s" syntax #+ syntax: Syntax]))) diff --git a/stdlib/source/lux/data/struct/tree/zipper.lux b/stdlib/source/lux/data/coll/tree/zipper.lux index 74dbd024f..c154ed19c 100644 --- a/stdlib/source/lux/data/struct/tree/zipper.lux +++ b/stdlib/source/lux/data/coll/tree/zipper.lux @@ -5,9 +5,9 @@ (;module: lux - (lux (data (struct [list "" Monad<List> Fold<List> "List/" Monoid<List>] - (tree [rose #+ Tree]) - [stack #+ Stack])) + (lux (data (coll [list "" Monad<List> Fold<List> "List/" Monoid<List>] + (tree [rose #+ Tree]) + [stack #+ Stack])) [compiler] (macro [ast] ["s" syntax #+ syntax: Syntax]))) diff --git a/stdlib/source/lux/data/struct/vector.lux b/stdlib/source/lux/data/coll/vector.lux index 9a22efb93..1dbceb97e 100644 --- a/stdlib/source/lux/data/struct/vector.lux +++ b/stdlib/source/lux/data/coll/vector.lux @@ -12,8 +12,8 @@ monoid fold) (data maybe - (struct [list "List/" Fold<List> Functor<List> Monoid<List>] - [array #+ Array "Array/" Functor<Array> Fold<Array>]) + (coll [list "List/" Fold<List> Functor<List> Monoid<List>] + [array #+ Array "Array/" Functor<Array> Fold<Array>]) [bit] [number "Int/" Number<Int>] [product]) @@ -255,7 +255,7 @@ (error! "Incorrect vector structure.")))) #;None))) -(def: #export (at idx vec) +(def: #export (nth idx vec) (All [a] (-> Nat (Vector a) (Maybe a))) (do Monad<Maybe> [base (base-for idx vec)] @@ -276,7 +276,7 @@ (def: #export (update idx f vec) (All [a] (-> Nat (-> a a) (Vector a) (Vector a))) - (case (at idx vec) + (case (nth idx vec) (#;Some val) (put idx (f val) vec) diff --git a/stdlib/source/lux/data/format/json.lux b/stdlib/source/lux/data/format/json.lux index 66ad6c093..0c61b958b 100644 --- a/stdlib/source/lux/data/format/json.lux +++ b/stdlib/source/lux/data/format/json.lux @@ -21,9 +21,9 @@ [error #- fail] [sum] [product] - (struct [list "" Fold<List> "List/" Monad<List>] - [vector #+ Vector vector "Vector/" Monad<Vector>] - [dict #+ Dict])) + (coll [list "" Fold<List> "List/" Monad<List>] + [vector #+ Vector vector "Vector/" Monad<Vector>] + [dict #+ Dict])) (codata [function]) [compiler #+ Monad<Lux> with-gensyms] (macro [syntax #+ syntax:] @@ -544,13 +544,13 @@ _ (#;Left (format "JSON value is not an object: " (show-json json)))))) -(def: #export (at idx parser) +(def: #export (nth idx parser) {#;doc "Parses an element inside a JSON array."} (All [a] (-> Nat (Parser a) (Parser a))) (lambda [json] (case json (#Array values) - (case (vector;at idx values) + (case (vector;nth idx values) (#;Some value) (case (parser value) (#;Right output) @@ -689,8 +689,8 @@ (and prev (default false (do Monad<Maybe> - [x' (vector;at idx xs) - y' (vector;at idx ys)] + [x' (vector;nth idx xs) + y' (vector;nth idx ys)] (wrap (= x' y')))))) true (list;indices (vector;size xs)))) @@ -734,7 +734,7 @@ parsers (|> parts (list;zip2 (list;indices array-size)) (List/map (lambda [[idx parser]] - (` (at (~ (ast;nat idx)) (~ parser))))))] + (` (nth (~ (ast;nat idx)) (~ parser))))))] (wrap (list (` ($_ seq (~@ parsers)))))) (#ObjectShape kvs) @@ -757,7 +757,7 @@ parsers (|> parts (list;zip2 (list;indices array-size)) (List/map (lambda [[idx parser]] - (` (at (~ (ast;nat idx)) (~ parser))))))] + (` (nth (~ (ast;nat idx)) (~ parser))))))] (wrap (list (` (ensure (array-size! (~ (ast;nat array-size))) ($_ seq (~@ parsers))))))) @@ -998,8 +998,8 @@ [#let [tag (ast;tag name)] decoder (Codec<JSON,?>//decode new-*env* :case:)] (wrap (list (` (do Monad<Parser> - [(~ g!_) (;;at +0 (;;text! (~ (ast;text (product;right name))))) - (~ g!_) (;;at +1 (~ decoder))] + [(~ g!_) (;;nth +0 (;;text! (~ (ast;text (product;right name))))) + (~ g!_) (;;nth +1 (~ decoder))] ((~ (' wrap)) ((~ tag) (~ g!_))))))))) members) #let [:x:+ (case g!vars diff --git a/stdlib/source/lux/data/text.lux b/stdlib/source/lux/data/text.lux index 85d5d9dd5..adc0454b2 100644 --- a/stdlib/source/lux/data/text.lux +++ b/stdlib/source/lux/data/text.lux @@ -11,7 +11,7 @@ monad codec hash) - (data (struct [list]) + (data (coll [list]) maybe))) ## [Functions] @@ -19,7 +19,7 @@ (-> Text Nat) (int-to-nat (_lux_proc ["jvm" "i2l"] [(_lux_proc ["jvm" "invokevirtual:java.lang.String:length:"] [x])]))) -(def: #export (at idx x) +(def: #export (nth idx x) (-> Nat Text (Maybe Char)) (if (n.< (size x) idx) (#;Some (_lux_proc ["jvm" "invokevirtual:java.lang.String:charAt:int"] [x (_lux_proc ["jvm" "l2i"] [(nat-to-int idx)])])) diff --git a/stdlib/source/lux/data/text/format.lux b/stdlib/source/lux/data/text/format.lux index 2ae5c62ca..732de0db4 100644 --- a/stdlib/source/lux/data/text/format.lux +++ b/stdlib/source/lux/data/text/format.lux @@ -11,7 +11,7 @@ [number] [text] [ident] - (struct [list "" Monad<List>])) + (coll [list "" Monad<List>])) [type] [compiler] (macro [ast] diff --git a/stdlib/source/lux/control/effect.lux b/stdlib/source/lux/effect.lux index 2b81ad543..de3038927 100644 --- a/stdlib/source/lux/control/effect.lux +++ b/stdlib/source/lux/effect.lux @@ -8,8 +8,8 @@ (lux (control ["F" functor] applicative monad) - (codata [io #- run]) - (data (struct [list "List/" Monad<List> Monoid<List>]) + [io #- run] + (data (coll [list "List/" Monad<List> Monoid<List>]) [number "Nat/" Codec<Text,Nat>] text/format error @@ -217,7 +217,7 @@ (def: translation^ (Syntax Translation) (s;form (do s;Monad<Syntax> - [_ (s;sample! (' =>))] + [_ (s;this! (' =>))] (s;seq s;symbol (s;tuple (s;seq s;any s;any)))))) diff --git a/stdlib/source/lux/host.lux b/stdlib/source/lux/host.lux index ededaa0a4..58d163c2e 100644 --- a/stdlib/source/lux/host.lux +++ b/stdlib/source/lux/host.lux @@ -7,10 +7,10 @@ lux (lux (control monad [enum]) - (codata function - [io #+ IO Monad<IO> io]) - (data (struct [list #* "" Functor<List> Fold<List> "List/" Monad<List> Monoid<List>] - [array #+ Array]) + [io #+ IO Monad<IO> io] + (codata function) + (data (coll [list #* "" Functor<List> Fold<List> "List/" Monad<List> Monoid<List>] + [array #+ Array]) number maybe [product] @@ -561,14 +561,14 @@ (-> Text Text (Syntax AST)) (do s;Monad<Syntax> [#let [dotted-name (format "." field-name)] - _ (s;sample! (ast;symbol ["" dotted-name]))] + _ (s;this! (ast;symbol ["" dotted-name]))] (wrap (`' (_lux_proc ["jvm" (~ (ast;text (format "getstatic" ":" class-name ":" field-name)))] []))))) (def: (make-get-var-parser class-name field-name) (-> Text Text (Syntax AST)) (do s;Monad<Syntax> [#let [dotted-name (format "." field-name)] - _ (s;sample! (ast;symbol ["" dotted-name]))] + _ (s;this! (ast;symbol ["" dotted-name]))] (wrap (`' (_lux_proc ["jvm" (~ (ast;text (format "getfield" ":" class-name ":" field-name)))] [_jvm_this]))))) (def: (make-put-var-parser class-name field-name) @@ -576,7 +576,7 @@ (do s;Monad<Syntax> [#let [dotted-name (format "." field-name)] [_ _ value] (: (Syntax [Unit Unit AST]) - (s;form ($_ s;seq (s;sample! (' :=)) (s;sample! (ast;symbol ["" dotted-name])) s;any)))] + (s;form ($_ s;seq (s;this! (' :=)) (s;this! (ast;symbol ["" dotted-name])) s;any)))] (wrap (`' (_lux_proc ["jvm" (~ (ast;text (format "putfield" ":" class-name ":" field-name)))] [_jvm_this (~ value)]))))) (def: (pre-walk-replace f input) @@ -621,7 +621,7 @@ (-> (List TypeParam) Text (List ArgDecl) (Syntax AST)) (do s;Monad<Syntax> [[_ args] (: (Syntax [Unit (List AST)]) - (s;form ($_ s;seq (s;sample! (' .new!)) (s;tuple (s;exactly (list;size arg-decls) s;any))))) + (s;form ($_ s;seq (s;this! (' .new!)) (s;tuple (s;exactly (list;size arg-decls) s;any))))) #let [arg-decls' (: (List Text) (map (. (simple-class$ params) product;right) arg-decls))]] (wrap (` (;_lux_proc ["jvm" (~ (ast;text (format "new" ":" class-name ":" (text;join-with "," arg-decls'))))] [(~@ args)]))))) @@ -631,7 +631,7 @@ (do s;Monad<Syntax> [#let [dotted-name (format "." method-name "!")] [_ args] (: (Syntax [Unit (List AST)]) - (s;form ($_ s;seq (s;sample! (ast;symbol ["" dotted-name])) (s;tuple (s;exactly (list;size arg-decls) s;any))))) + (s;form ($_ s;seq (s;this! (ast;symbol ["" dotted-name])) (s;tuple (s;exactly (list;size arg-decls) s;any))))) #let [arg-decls' (: (List Text) (map (. (simple-class$ params) product;right) arg-decls))]] (wrap (`' (;_lux_proc ["jvm" (~ (ast;text (format "invokestatic" ":" class-name ":" method-name ":" (text;join-with "," arg-decls'))))] [(~@ args)]))))) @@ -642,7 +642,7 @@ (do s;Monad<Syntax> [#let [dotted-name (format "." method-name "!")] [_ args] (: (Syntax [Unit (List AST)]) - (s;form ($_ s;seq (s;sample! (ast;symbol ["" dotted-name])) (s;tuple (s;exactly (list;size arg-decls) s;any))))) + (s;form ($_ s;seq (s;this! (ast;symbol ["" dotted-name])) (s;tuple (s;exactly (list;size arg-decls) s;any))))) #let [arg-decls' (: (List Text) (map (. (simple-class$ params) product;right) arg-decls))]] (wrap (`' (;_lux_proc ["jvm" (~ (ast;text (format <jvm-op> ":" class-name ":" method-name ":" (text;join-with "," arg-decls'))))] [(~' _jvm_this) (~@ args)])))))] @@ -680,32 +680,32 @@ (Syntax PrivacyModifier) (let [(^open) s;Monad<Syntax>] ($_ s;alt - (s;sample! (' #public)) - (s;sample! (' #private)) - (s;sample! (' #protected)) + (s;this! (' #public)) + (s;this! (' #private)) + (s;this! (' #protected)) (wrap [])))) (def: inheritance-modifier^ (Syntax InheritanceModifier) (let [(^open) s;Monad<Syntax>] ($_ s;alt - (s;sample! (' #final)) - (s;sample! (' #abstract)) + (s;this! (' #final)) + (s;this! (' #abstract)) (wrap [])))) (def: bound-kind^ (Syntax BoundKind) - (s;alt (s;sample! (' <)) - (s;sample! (' >)))) + (s;alt (s;this! (' <)) + (s;this! (' >)))) (def: (generic-type^ imports type-vars) (-> ClassImports (List TypeParam) (Syntax GenericType)) ($_ s;either (do s;Monad<Syntax> - [_ (s;sample! (' ?))] + [_ (s;this! (' ?))] (wrap (#GenericWildcard #;None))) (s;tuple (do s;Monad<Syntax> - [_ (s;sample! (' ?)) + [_ (s;this! (' ?)) bound-kind bound-kind^ bound (generic-type^ imports type-vars)] (wrap (#GenericWildcard (#;Some [bound-kind bound]))))) @@ -731,7 +731,7 @@ ## else (wrap (#GenericClass name (list)))))) (s;form (do s;Monad<Syntax> - [name (s;sample! (' Array)) + [name (s;this! (' Array)) component (generic-type^ imports type-vars)] (case component (^template [<class> <name>] @@ -763,7 +763,7 @@ (wrap [param-name (list)])) (s;tuple (do s;Monad<Syntax> [param-name s;local-symbol - _ (s;sample! (' <)) + _ (s;this! (' <)) bounds (s;many (generic-type^ imports (list)))] (wrap [param-name bounds]))))) @@ -807,7 +807,7 @@ (def: (annotations^' imports) (-> ClassImports (Syntax (List Annotation))) (do s;Monad<Syntax> - [_ (s;sample! (' #ann))] + [_ (s;this! (' #ann))] (s;tuple (s;some (annotation^ imports))))) (def: (annotations^ imports) @@ -819,7 +819,7 @@ (def: (throws-decl'^ imports type-vars) (-> ClassImports (List TypeParam) (Syntax (List GenericType))) (do s;Monad<Syntax> - [_ (s;sample! (' #throws))] + [_ (s;this! (' #throws))] (s;tuple (s;some (generic-type^ imports type-vars))))) (def: (throws-decl^ imports type-vars) @@ -845,14 +845,14 @@ (def: state-modifier^ (Syntax StateModifier) ($_ s;alt - (s;sample! (' #volatile)) - (s;sample! (' #final)) + (s;this! (' #volatile)) + (s;this! (' #final)) (:: s;Monad<Syntax> wrap []))) (def: (field-decl^ imports type-vars) (-> ClassImports (List TypeParam) (Syntax [MemberDecl FieldDecl])) (s;either (s;form (do s;Monad<Syntax> - [_ (s;sample! (' #const)) + [_ (s;this! (' #const)) name s;local-symbol anns (annotations^ imports) type (generic-type^ imports type-vars) @@ -887,10 +887,10 @@ (-> ClassImports (List TypeParam) (Syntax [MemberDecl MethodDef])) (s;form (do s;Monad<Syntax> [pm privacy-modifier^ - strict-fp? (s;sample? (' #strict)) + strict-fp? (s;this? (' #strict)) method-vars (s;default (list) (type-params^ imports)) #let [total-vars (List/append class-vars method-vars)] - [_ arg-decls] (s;form (s;seq (s;sample! (' new)) + [_ arg-decls] (s;form (s;seq (s;this! (' new)) (arg-decls^ imports total-vars))) constructor-args (constructor-args^ imports total-vars) exs (throws-decl^ imports total-vars) @@ -905,8 +905,8 @@ (-> ClassImports (List TypeParam) (Syntax [MemberDecl MethodDef])) (s;form (do s;Monad<Syntax> [pm privacy-modifier^ - strict-fp? (s;sample? (' #strict)) - final? (s;sample? (' #final)) + strict-fp? (s;this? (' #strict)) + final? (s;this? (' #final)) method-vars (s;default (list) (type-params^ imports)) #let [total-vars (List/append class-vars method-vars)] [name arg-decls] (s;form (s;seq s;local-symbol @@ -923,7 +923,7 @@ (def: (overriden-method-def^ imports) (-> ClassImports (Syntax [MemberDecl MethodDef])) (s;form (do s;Monad<Syntax> - [strict-fp? (s;sample? (' #strict)) + [strict-fp? (s;this? (' #strict)) owner-class (class-decl^ imports) method-vars (s;default (list) (type-params^ imports)) #let [total-vars (List/append (product;right owner-class) method-vars)] @@ -942,8 +942,8 @@ (-> ClassImports (Syntax [MemberDecl MethodDef])) (s;form (do s;Monad<Syntax> [pm privacy-modifier^ - strict-fp? (s;sample? (' #strict)) - _ (s;sample! (' #static)) + strict-fp? (s;this? (' #strict)) + _ (s;this! (' #static)) method-vars (s;default (list) (type-params^ imports)) #let [total-vars method-vars] [name arg-decls] (s;form (s;seq s;local-symbol @@ -961,7 +961,7 @@ (-> ClassImports (Syntax [MemberDecl MethodDef])) (s;form (do s;Monad<Syntax> [pm privacy-modifier^ - _ (s;sample! (' #abstract)) + _ (s;this! (' #abstract)) method-vars (s;default (list) (type-params^ imports)) #let [total-vars method-vars] [name arg-decls] (s;form (s;seq s;local-symbol @@ -978,7 +978,7 @@ (-> ClassImports (Syntax [MemberDecl MethodDef])) (s;form (do s;Monad<Syntax> [pm privacy-modifier^ - _ (s;sample! (' #native)) + _ (s;this! (' #native)) method-vars (s;default (list) (type-params^ imports)) #let [total-vars method-vars] [name arg-decls] (s;form (s;seq s;local-symbol @@ -1008,42 +1008,42 @@ (def: class-kind^ (Syntax ClassKind) (s;either (do s;Monad<Syntax> - [_ (s;sample! (' #class))] + [_ (s;this! (' #class))] (wrap #Class)) (do s;Monad<Syntax> - [_ (s;sample! (' #interface))] + [_ (s;this! (' #interface))] (wrap #Interface)) )) (def: import-member-alias^ (Syntax (Maybe Text)) (s;opt (do s;Monad<Syntax> - [_ (s;sample! (' #as))] + [_ (s;this! (' #as))] s;local-symbol))) (def: (import-member-args^ imports type-vars) (-> ClassImports (List TypeParam) (Syntax (List [Bool GenericType]))) - (s;tuple (s;some (s;seq (s;sample? (' #?)) (generic-type^ imports type-vars))))) + (s;tuple (s;some (s;seq (s;this? (' #?)) (generic-type^ imports type-vars))))) (def: import-member-return-flags^ (Syntax [Bool Bool Bool]) - ($_ s;seq (s;sample? (' #io)) (s;sample? (' #try)) (s;sample? (' #?)))) + ($_ s;seq (s;this? (' #io)) (s;this? (' #try)) (s;this? (' #?)))) (def: primitive-mode^ (Syntax Primitive-Mode) - (s;alt (s;sample! (' #manual)) - (s;sample! (' #auto)))) + (s;alt (s;this! (' #manual)) + (s;this! (' #auto)))) (def: (import-member-decl^ imports owner-vars) (-> ClassImports (List TypeParam) (Syntax ImportMemberDecl)) ($_ s;either (s;form (do s;Monad<Syntax> - [_ (s;sample! (' #enum)) + [_ (s;this! (' #enum)) enum-members (s;some s;local-symbol)] (wrap (#EnumDecl enum-members)))) (s;form (do s;Monad<Syntax> [tvars (s;default (list) (type-params^ imports)) - _ (s;sample! (' new)) + _ (s;this! (' new)) ?alias import-member-alias^ #let [total-vars (List/append owner-vars tvars)] ?prim-mode (s;opt primitive-mode^) @@ -1061,7 +1061,7 @@ )) (s;form (do s;Monad<Syntax> [kind (: (Syntax ImportMethodKind) - (s;alt (s;sample! (' #static)) + (s;alt (s;this! (' #static)) (wrap []))) tvars (s;default (list) (type-params^ imports)) name s;local-symbol @@ -1083,12 +1083,12 @@ #import-method-return return }])))) (s;form (do s;Monad<Syntax> - [static? (s;sample? (' #static)) + [static? (s;this? (' #static)) name s;local-symbol ?prim-mode (s;opt primitive-mode^) gtype (generic-type^ imports owner-vars) - maybe? (s;sample? (' #?)) - setter? (s;sample? (' #!))] + maybe? (s;this? (' #?)) + setter? (s;this? (' #!))] (wrap (#FieldAccessDecl {#import-field-mode (default #AutoPrM ?prim-mode) #import-field-name name #import-field-static? static? @@ -1251,7 +1251,7 @@ (#OverridenMethod strict-fp? class-decl type-vars arg-decls return-type body exs) (let [super-replacer (parser->replacer (s;form (do s;Monad<Syntax> - [_ (s;sample! (' .super!)) + [_ (s;this! (' .super!)) args (s;tuple (s;exactly (list;size arg-decls) s;any)) #let [arg-decls' (: (List Text) (map (. (simple-class$ (list)) product;right) arg-decls))]] @@ -1944,7 +1944,7 @@ (compiler;fail (format "Unknown class: " class-name)))) (syntax: #export (jvm-import [#let [imports (class-imports *compiler*)]] - [long-name? (s;sample? (' #long))] + [long-name? (s;this? (' #long))] [class-decl (class-decl^ imports)] [#let [full-class-name (product;left class-decl) imports (add-import [(short-class-name full-class-name) full-class-name] diff --git a/stdlib/source/lux/codata/io.lux b/stdlib/source/lux/io.lux index 60ea73834..e395e7c32 100644 --- a/stdlib/source/lux/codata/io.lux +++ b/stdlib/source/lux/io.lux @@ -8,7 +8,7 @@ (lux (control functor applicative monad) - (data (struct list)))) + (data (coll list)))) ## [Types] (type: #export (IO a) diff --git a/stdlib/source/lux/lexer.lux b/stdlib/source/lux/lexer.lux index ca8f7f5cf..03e5f5cbd 100644 --- a/stdlib/source/lux/lexer.lux +++ b/stdlib/source/lux/lexer.lux @@ -15,7 +15,7 @@ [char "Char/" Ord<Char>] maybe ["E" error #- fail] - (struct [list "" Functor<List>])))) + (coll [list "" Functor<List>])))) ## [Types] (type: #export (Lexer a) @@ -86,7 +86,7 @@ {#;doc "Just returns the next character without applying any logic."} (Lexer Char) (lambda [input] - (case [(text;at +0 input) (text;split +1 input)] + (case [(text;nth +0 input) (text;split +1 input)] [(#;Some output) (#;Some [_ input'])] (#E;Success [input' output]) @@ -276,7 +276,7 @@ {#;doc "Lex the next character (without consuming it from the input)."} (Lexer Char) (lambda [input] - (case (text;at +0 input) + (case (text;nth +0 input) (#;Some output) (#E;Success [input output]) @@ -288,7 +288,7 @@ {#;doc "Lex a character if it matches the given sample."} (-> Char (Lexer Char)) (lambda [input] - (case [(text;at +0 input) (text;split +1 input)] + (case [(text;nth +0 input) (text;split +1 input)] [(#;Some char') (#;Some [_ input'])] (if (Char/= test char') (#E;Success [input' test]) @@ -352,7 +352,7 @@ (case (text;split +1 input) (#;Some [init input']) (if (text;contains? init options) - (case (text;at +0 init) + (case (text;nth +0 init) (#;Some output) (#E;Success [input' output]) @@ -370,7 +370,7 @@ (case (text;split +1 input) (#;Some [init input']) (if (;not (text;contains? init options)) - (case (text;at +0 init) + (case (text;nth +0 init) (#;Some output) (#E;Success [input' output]) @@ -388,7 +388,7 @@ (case (: (Maybe [Text Char]) (do Monad<Maybe> [[init input'] (text;split +1 input) - output (text;at +0 init)] + output (text;nth +0 init)] (wrap [input' output]))) (#;Some [input' output]) (if (p output) diff --git a/stdlib/source/lux/lexer/regex.lux b/stdlib/source/lux/lexer/regex.lux index 5684a4465..503364ce0 100644 --- a/stdlib/source/lux/lexer/regex.lux +++ b/stdlib/source/lux/lexer/regex.lux @@ -11,7 +11,7 @@ text/format [number "Int/" Codec<Text,Int>] [product] - (struct [list "" Fold<List> "List/" Monad<List>])) + (coll [list "" Fold<List> "List/" Monad<List>])) [compiler #- run] (macro [ast] [syntax #+ syntax:]) diff --git a/stdlib/source/lux/macro.lux b/stdlib/source/lux/macro.lux index b06deedb7..54d41b28f 100644 --- a/stdlib/source/lux/macro.lux +++ b/stdlib/source/lux/macro.lux @@ -6,14 +6,14 @@ (;module: lux (lux (control monad) - (data (struct [list "List/" Monad<List>]) + (data (coll [list "List/" Monad<List>]) text/format) [compiler] (macro ["s" syntax #+ syntax: Syntax]))) (def: omit^ (Syntax Bool) - (s;sample? (' #omit))) + (s;this? (' #omit))) (do-template [<macro> <func>] [(syntax: #export (<macro> [? omit^] token) diff --git a/stdlib/source/lux/macro/ast.lux b/stdlib/source/lux/macro/ast.lux index 821264c09..d284a8043 100644 --- a/stdlib/source/lux/macro/ast.lux +++ b/stdlib/source/lux/macro/ast.lux @@ -11,7 +11,7 @@ [char] [text #+ Eq<Text> "Text/" Monoid<Text>] ident - (struct [list #* "" Functor<List> Fold<List>]) + (coll [list #* "" Functor<List> Fold<List>]) ))) ## [Types] diff --git a/stdlib/source/lux/macro/poly.lux b/stdlib/source/lux/macro/poly.lux index d194a540b..5420e0328 100644 --- a/stdlib/source/lux/macro/poly.lux +++ b/stdlib/source/lux/macro/poly.lux @@ -9,8 +9,8 @@ [eq]) (data [text] text/format - (struct [list "List/" Fold<List> Monad<List>] - [dict #+ Dict]) + (coll [list "List/" Fold<List> Monad<List>] + [dict #+ Dict]) [number] [product] [bool] diff --git a/stdlib/source/lux/macro/poly/eq.lux b/stdlib/source/lux/macro/poly/eq.lux index bdce71d50..a9d7c0fae 100644 --- a/stdlib/source/lux/macro/poly/eq.lux +++ b/stdlib/source/lux/macro/poly/eq.lux @@ -9,8 +9,8 @@ [eq]) (data [text] text/format - (struct [list "List/" Monad<List>] - [dict #+ Dict]) + (coll [list "List/" Monad<List>] + [dict #+ Dict]) [number] [product] [bool] diff --git a/stdlib/source/lux/macro/poly/functor.lux b/stdlib/source/lux/macro/poly/functor.lux index e659bb41d..ec06193bf 100644 --- a/stdlib/source/lux/macro/poly/functor.lux +++ b/stdlib/source/lux/macro/poly/functor.lux @@ -9,8 +9,8 @@ [functor]) (data [text] text/format - (struct [list "List/" Monad<List>] - [dict #+ Dict]) + (coll [list "List/" Monad<List>] + [dict #+ Dict]) [number] [product] [bool] diff --git a/stdlib/source/lux/macro/poly/text-encoder.lux b/stdlib/source/lux/macro/poly/text-encoder.lux index c538844a7..c197f8e0c 100644 --- a/stdlib/source/lux/macro/poly/text-encoder.lux +++ b/stdlib/source/lux/macro/poly/text-encoder.lux @@ -9,8 +9,8 @@ [codec]) (data [text] text/format - (struct [list "List/" Monad<List>] - [dict #+ Dict]) + (coll [list "List/" Monad<List>] + [dict #+ Dict]) [number] [product] [bool] diff --git a/stdlib/source/lux/macro/syntax.lux b/stdlib/source/lux/macro/syntax.lux index ba24b607b..2713de9c1 100644 --- a/stdlib/source/lux/macro/syntax.lux +++ b/stdlib/source/lux/macro/syntax.lux @@ -15,7 +15,7 @@ [number] [text "Text/" Monoid<Text>] [ident] - (struct [list #* "" Functor<List> Fold<List> "List/" Monoid<List>]) + (coll [list #* "" Functor<List> Fold<List> "List/" Monoid<List>]) [product] [error #- fail])) (.. [ast "AST/" Eq<AST>])) @@ -113,7 +113,7 @@ [ tag Ident #;TagS ident;Eq<Ident> "tag"] ) -(def: #export (sample? ast) +(def: #export (this? ast) {#;doc "Asks if the given AST is the next input."} (-> AST (Syntax Bool)) (lambda [tokens] @@ -128,7 +128,7 @@ _ (#;Right [tokens false])))) -(def: #export (sample! ast) +(def: #export (this! ast) {#;doc "Ensures the given AST is the next input."} (-> AST (Syntax Unit)) (lambda [tokens] diff --git a/stdlib/source/lux/macro/syntax/common.lux b/stdlib/source/lux/macro/syntax/common.lux index 96203b4c2..3ebb716c6 100644 --- a/stdlib/source/lux/macro/syntax/common.lux +++ b/stdlib/source/lux/macro/syntax/common.lux @@ -8,7 +8,7 @@ The goal is to be able to reuse common syntax in macro definitions across libraries."} lux (lux (control monad) - (data (struct [list]) + (data (coll [list]) text/format [ident "Ident/" Eq<Ident>] [product]) @@ -27,8 +27,8 @@ #export #hidden)} (Syntax (Maybe Export-Level)) - (s;opt (s;alt (s;sample! (' #export)) - (s;sample! (' #hidden))))) + (s;opt (s;alt (s;this! (' #export)) + (s;this! (' #hidden))))) (def: #export (gen-export-level ?el) (-> (Maybe Export-Level) (List AST)) @@ -70,7 +70,7 @@ (def: check^ (Syntax [(Maybe AST) AST]) (s;either (s;form (do s;Monad<Syntax> - [_ (s;sample! (' lux;_lux_:)) + [_ (s;this! (' lux;_lux_:)) type s;any value s;any] (wrap [(#;Some type) value]))) @@ -83,9 +83,9 @@ (def: (_def-anns^ _) (-> Top (Syntax (List [Ident AST]))) - (s;alt (s;sample! (' #lux;Nil)) + (s;alt (s;this! (' #lux;Nil)) (s;form (do s;Monad<Syntax> - [_ (s;sample! (' #lux;Cons)) + [_ (s;this! (' #lux;Cons)) [head tail] (s;seq (s;tuple (s;seq _def-anns-tag^ s;any)) (_def-anns^ []))] (wrap [head tail]))) @@ -94,10 +94,10 @@ (def: (flat-list^ _) (-> Top (Syntax (List AST))) (s;either (do s;Monad<Syntax> - [_ (s;sample! (' #lux;Nil))] + [_ (s;this! (' #lux;Nil))] (wrap (list))) (s;form (do s;Monad<Syntax> - [_ (s;sample! (' #lux;Cons)) + [_ (s;this! (' #lux;Cons)) [head tail] (s;tuple (s;seq s;any s;any)) tail (s;local (list tail) (flat-list^ []))] (wrap (#;Cons head tail)))))) @@ -105,13 +105,13 @@ (def: list-meta^ (Syntax (List AST)) (s;form (do s;Monad<Syntax> - [_ (s;sample! (' #lux;ListA))] + [_ (s;this! (' #lux;ListA))] (flat-list^ [])))) (def: text-meta^ (Syntax Text) (s;form (do s;Monad<Syntax> - [_ (s;sample! (' #lux;TextA))] + [_ (s;this! (' #lux;TextA))] s;text))) (def: (find-def-args meta-data) @@ -138,7 +138,7 @@ (compiler;macro-expand-all def-raw))] (s;local me-def-raw (s;form (do @ - [_ (s;sample! (' lux;_lux_def)) + [_ (s;this! (' lux;_lux_def)) def-name s;local-symbol [?def-type def-value] check^ def-anns s;any diff --git a/stdlib/source/lux/math.lux b/stdlib/source/lux/math.lux index d5a03b421..1fdde77e6 100644 --- a/stdlib/source/lux/math.lux +++ b/stdlib/source/lux/math.lux @@ -6,7 +6,7 @@ (;module: {#;doc "Common mathematical constants and functions."} lux (lux (control monad) - (data (struct [list "" Fold<List>]) + (data (coll [list "" Fold<List>]) [number "Int/" Number<Int>] [product] text/format) @@ -122,7 +122,7 @@ (s/map ast;tag s;tag)) (s;form (s;many s;any)) (s;tuple (s;either (do s;Monad<Syntax> - [_ (s;sample! (' #and)) + [_ (s;this! (' #and)) init-subject (infix^ []) init-op s;any init-param (infix^ []) diff --git a/stdlib/source/lux/math/complex.lux b/stdlib/source/lux/math/complex.lux index 9666abdab..ef91715ad 100644 --- a/stdlib/source/lux/math/complex.lux +++ b/stdlib/source/lux/math/complex.lux @@ -16,7 +16,7 @@ text/format error maybe - (struct [list "List/" Monad<List>])) + (coll [list "List/" Monad<List>])) [compiler] (macro [ast] ["s" syntax #+ syntax: Syntax]))) diff --git a/stdlib/source/lux/math/simple.lux b/stdlib/source/lux/math/simple.lux index f8b059794..45ba0a4a4 100644 --- a/stdlib/source/lux/math/simple.lux +++ b/stdlib/source/lux/math/simple.lux @@ -8,7 +8,7 @@ (lux (control monad) (data text/format [product] - (struct [list])) + (coll [list])) [compiler] (macro [ast] ["s" syntax #+ syntax: Syntax]) diff --git a/stdlib/source/lux/pipe.lux b/stdlib/source/lux/pipe.lux index 12337e3ef..2008971c4 100644 --- a/stdlib/source/lux/pipe.lux +++ b/stdlib/source/lux/pipe.lux @@ -6,7 +6,7 @@ (;module: {#;doc "Composable extensions to the piping macro |> that enhance it with various abilities."} lux (lux (control monad) - (data (struct [list #+ Monad<List> "" Fold<List> "List/" Monad<List>]) + (data (coll [list #+ Monad<List> "" Fold<List> "List/" Monad<List>]) maybe) [compiler #+ with-gensyms Monad<Lux>] (macro ["s" syntax #+ syntax: Syntax] diff --git a/stdlib/source/lux/random.lux b/stdlib/source/lux/random.lux index 195255643..468b6a34b 100644 --- a/stdlib/source/lux/random.lux +++ b/stdlib/source/lux/random.lux @@ -15,13 +15,13 @@ text/format [product] [number] - (struct [list "List/" Fold<List>] - ["A" array] - ["D" dict] - ["Q" queue] - ["S" set] - ["ST" stack] - ["V" vector])) + (coll [list "List/" Fold<List>] + ["A" array] + ["D" dict] + ["Q" queue] + ["S" set] + ["ST" stack] + ["V" vector])) (math ["r" ratio] ["c" complex]))) @@ -288,7 +288,7 @@ (def: (swap from to vec) (All [a] (-> Nat Nat (V;Vector a) (V;Vector a))) (V;put to (default (undefined) - (V;at from vec)) + (V;nth from vec)) vec)) (def: #export (shuffle seed vector) diff --git a/stdlib/source/lux/test.lux b/stdlib/source/lux/test.lux index 9524a2168..3b582815e 100644 --- a/stdlib/source/lux/test.lux +++ b/stdlib/source/lux/test.lux @@ -12,12 +12,12 @@ applicative monad) (concurrency [promise #+ Promise Monad<Promise>]) - (data (struct [list "List/" Monad<List> Fold<List>]) + (data (coll [list "List/" Monad<List> Fold<List>]) [product] [text] text/format [error #- fail "Error/" Monad<Error>]) - (codata [io #- run]) + [io #- run] ["R" random] [host #- try])) @@ -136,10 +136,10 @@ (def: config^ (Syntax Test-Config) (s;alt (do s;Monad<Syntax> - [_ (s;sample! (' #seed))] + [_ (s;this! (' #seed))] s;nat) (do s;Monad<Syntax> - [_ (s;sample! (' #times))] + [_ (s;this! (' #times))] s;nat))) (def: property-test^ diff --git a/stdlib/source/lux/type.lux b/stdlib/source/lux/type.lux index cda44670b..7610773b1 100644 --- a/stdlib/source/lux/type.lux +++ b/stdlib/source/lux/type.lux @@ -11,7 +11,7 @@ [ident "Ident/" Eq<Ident>] [number "Nat/" Codec<Text,Nat>] maybe - (struct [list #+ "List/" Monad<List> Monoid<List> Fold<List>])) + (coll [list #+ "List/" Monad<List> Monoid<List> Fold<List>])) (macro [ast]) )) @@ -41,7 +41,7 @@ (#;BoundT idx) (default (error! (Text/append "Unknown type var: " (Nat/encode idx))) - (list;at idx env)) + (list;nth idx env)) _ type diff --git a/stdlib/source/lux/type/auto.lux b/stdlib/source/lux/type/auto.lux index 2266827c9..28ba34090 100644 --- a/stdlib/source/lux/type/auto.lux +++ b/stdlib/source/lux/type/auto.lux @@ -10,8 +10,8 @@ (data [text "Text/" Eq<Text>] text/format [number] - (struct [list "List/" Monad<List> Fold<List>] - [dict]) + (coll [list "List/" Monad<List> Fold<List>] + [dict]) [bool] [product]) [compiler #+ Monad<Lux>] diff --git a/stdlib/source/lux/type/check.lux b/stdlib/source/lux/type/check.lux index 25cf19834..78461f7d7 100644 --- a/stdlib/source/lux/type/check.lux +++ b/stdlib/source/lux/type/check.lux @@ -15,8 +15,8 @@ [number] maybe [product] - (struct [list] - [dict]) + (coll [list] + [dict]) [error #- fail]) [type "Type/" Eq<Type>] )) |