diff options
48 files changed, 289 insertions, 242 deletions
diff --git a/documentation/bookmark/browser.md b/documentation/bookmark/browser.md index e2f95c54c..018b3b7b7 100644 --- a/documentation/bookmark/browser.md +++ b/documentation/bookmark/browser.md @@ -36,6 +36,7 @@  # Reference +1. [Public Suffix List](https://publicsuffix.org/)  1. https://www.opera.com/gx  1. https://evertpot.com/tabs-are-the-wrong-abstraction/  1. http://news.mit.edu/2018/system-patches-private-browsing-0223 diff --git a/documentation/bookmark/compiler.md b/documentation/bookmark/compiler.md index 5d582a174..390c22c5e 100644 --- a/documentation/bookmark/compiler.md +++ b/documentation/bookmark/compiler.md @@ -1,5 +1,6 @@  # Methodology +1. [Compiling with Continuations by Andrew W. Appel](https://www.amazon.com/dp/0521416957)  1. [Collapsing Towers of Interpreters](https://www.cs.purdue.edu/homes/rompf/papers/amin-popl18.pdf)  1. [Miniphases: Compilation using Modular and Efficient Tree Transformations](https://infoscience.epfl.ch/record/228518/files/paper.pdf) diff --git a/stdlib/source/library/lux.lux b/stdlib/source/library/lux.lux index 9b01303ea..6d1f82632 100644 --- a/stdlib/source/library/lux.lux +++ b/stdlib/source/library/lux.lux @@ -2052,7 +2052,7 @@             #None}            x)) -(def:''' (tuple->list tuple) +(def:''' (tuple_to_list tuple)           #Nil           (-> Code ($' Maybe ($' List Code)))           ({[_ (#Tuple members)] @@ -2161,7 +2161,7 @@               _               (fail "Wrong syntax for template")}              [(monad\map maybe_monad get_short bindings) -             (monad\map maybe_monad tuple->list data)]) +             (monad\map maybe_monad tuple_to_list data)])             _             (fail "Wrong syntax for template")} @@ -3294,8 +3294,7 @@      (#Cons x xs')      (if ("lux i64 =" 0 idx)        (#Some x) -      (nth ("lux i64 -" 1 idx) xs') -      ))) +      (nth ("lux i64 -" 1 idx) xs'))))  (def: (beta_reduce env type)    (-> (List Type) Type Type) @@ -4839,7 +4838,7 @@      (case (: (Maybe (List Code))               (do maybe_monad                 [bindings' (monad\map maybe_monad get_short bindings) -                data' (monad\map maybe_monad tuple->list data)] +                data' (monad\map maybe_monad tuple_to_list data)]                 (let [num_bindings (list\size bindings')]                   (if (every? (|>> ("lux i64 =" num_bindings))                               (list\map list\size data')) @@ -4943,7 +4942,7 @@    (-> (List [Code Code]) (List Code))    (|>> (list\map rejoin_pair) list\join)) -(def: (doc_example->Text prev_location baseline example) +(def: (doc_example_to_text prev_location baseline example)    (-> Location Nat Code [Location Text])    (case example      (^template [<tag> <encode>] @@ -4963,7 +4962,7 @@      (^template [<tag> <open> <close> <prep>]        [[group_location (<tag> parts)]         (let [[group_location' parts_text] (list\fold (function (_ part [last_location text_accum]) -                                                       (let [[part_location part_text] (doc_example->Text last_location baseline part)] +                                                       (let [[part_location part_text] (doc_example_to_text last_location baseline part)]                                                           [part_location (text\compose text_accum part_text)]))                                                       [(delim_update_location group_location) ""]                                                       (<prep> parts))] @@ -4977,14 +4976,14 @@       [#Record "{" "}" rejoin_all_pairs])      [new_location (#Rev value)] -    ("lux io error" "@doc_example->Text Undefined behavior.") +    ("lux io error" "@doc_example_to_text Undefined behavior.")      ))  (def: (with_baseline baseline [file line column])    (-> Nat Location Location)    [file line baseline]) -(def: (doc_fragment->Text fragment) +(def: (doc_fragment_to_text fragment)    (-> Doc_Fragment Text)    (case fragment      (#Doc_Comment comment) @@ -4996,7 +4995,7 @@      (#Doc_Example example)      (let [baseline (find_baseline_column example)            [location _] example -          [_ text] (doc_example->Text (with_baseline baseline location) baseline example)] +          [_ text] (doc_example_to_text (with_baseline baseline location) baseline example)]        (text\compose text __paragraph))))  (macro: #export (doc tokens) @@ -5013,7 +5012,7 @@                      "         x)))"))}    (return (list (` [(~ location_code)                      (#.Text (~ (|> tokens -                                   (list\map (|>> identify_doc_fragment doc_fragment->Text)) +                                   (list\map (|>> identify_doc_fragment doc_fragment_to_text))                                     (text\join_with "")                                     text$)))])))) @@ -5451,17 +5450,6 @@      (#Right state scope_type_vars)      )) -(def: (list_at idx xs) -  (All [a] (-> Nat (List a) (Maybe a))) -  (case xs -    #Nil -    #None -     -    (#Cons x xs') -    (if ("lux i64 =" 0 idx) -      (#Some x) -      (list_at (dec idx) xs')))) -  (macro: #export ($ tokens)    {#.doc (doc "Allows you to refer to the type-variables in a polymorphic function's type, by their index."                "In the example below, 0 corresponds to the 'a' variable." @@ -5475,7 +5463,7 @@      (^ (list [_ (#Nat idx)]))      (do meta_monad        [stvs get_scope_type_vars] -      (case (list_at idx (list\reverse stvs)) +      (case (..nth idx (list\reverse stvs))          (#Some var_id)          (wrap (list (` (#Ex (~ (nat$ var_id)))))) diff --git a/stdlib/source/library/lux/abstract/fold.lux b/stdlib/source/library/lux/abstract/fold.lux index 168d743be..58059e634 100644 --- a/stdlib/source/library/lux/abstract/fold.lux +++ b/stdlib/source/library/lux/abstract/fold.lux @@ -10,7 +10,7 @@         (-> (-> b a a) a (F b) a))       fold)) -(def: #export (with-monoid monoid fold value) +(def: #export (with_monoid monoid fold value)    (All [F a]      (-> (Monoid a) (Fold F) (F a) a))    (let [(^open "/\.") monoid] diff --git a/stdlib/source/library/lux/control/function/memo.lux b/stdlib/source/library/lux/control/function/memo.lux index 5ab6c2b3b..4c50a0695 100644 --- a/stdlib/source/library/lux/control/function/memo.lux +++ b/stdlib/source/library/lux/control/function/memo.lux @@ -41,7 +41,7 @@    (All [i o]      (:let [Memory (Dictionary i o)]        (-> (Memo i o) (-> [Memory i] [Memory o])))) -  (let [memo (//.mixin (//.inherit ..memoization (//.from-recursive memo)))] +  (let [memo (//.mixin (//.inherit ..memoization (//.from_recursive memo)))]      (function (_ [memory input])        (|> input memo (state.run memory))))) @@ -50,7 +50,7 @@                "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 (//.inherit ..memoization (//.from-recursive memo))) +  (let [memo (//.mixin (//.inherit ..memoization (//.from_recursive memo)))          empty (dictionary.new hash)]      (|>> memo (state.run empty) product.right))) @@ -59,6 +59,6 @@                "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 (//.from-recursive memo)) +  (let [memo (//.mixin (//.from_recursive memo))          empty (dictionary.new hash)]      (|>> memo (state.run empty) product.right))) diff --git a/stdlib/source/library/lux/control/function/mixin.lux b/stdlib/source/library/lux/control/function/mixin.lux index f70b2f9c3..8c3443339 100644 --- a/stdlib/source/library/lux/control/function/mixin.lux +++ b/stdlib/source/library/lux/control/function/mixin.lux @@ -58,7 +58,7 @@  (type: #export (Recursive i o)    (-> (-> i o) (-> i o))) -(def: #export (from-recursive recursive) +(def: #export (from_recursive recursive)    (All [i o] (-> (Recursive i o) (Mixin i o)))    (function (_ delegate recur)      (recursive recur))) diff --git a/stdlib/source/library/lux/control/parser/tree.lux b/stdlib/source/library/lux/control/parser/tree.lux index 5834c69e8..6f2080628 100644 --- a/stdlib/source/library/lux/control/parser/tree.lux +++ b/stdlib/source/library/lux/control/parser/tree.lux @@ -30,7 +30,7 @@    (function (_ zipper)      (#try.Success [zipper (zipper.value zipper)]))) -(exception: #export cannot-move-further) +(exception: #export cannot_move_further)  (template [<name> <direction>]    [(def: #export <name> @@ -38,7 +38,7 @@       (function (_ zipper)         (case (<direction> zipper)           #.None -         (exception.throw ..cannot-move-further []) +         (exception.throw ..cannot_move_further [])           (#.Some next)           (#try.Success [next []]))))] diff --git a/stdlib/source/library/lux/control/state.lux b/stdlib/source/library/lux/control/state.lux index ef0e2dbb7..b39690469 100644 --- a/stdlib/source/library/lux/control/state.lux +++ b/stdlib/source/library/lux/control/state.lux @@ -89,7 +89,7 @@          (while condition body))        (wrap [])))) -(def: #export (do-while condition body) +(def: #export (do_while condition body)    (All [s] (-> (State s Bit) (State s Any) (State s Any)))    (do ..monad      [_ body] diff --git a/stdlib/source/library/lux/data/collection/bits.lux b/stdlib/source/library/lux/data/collection/bits.lux index 63e90f7c8..c90cff48c 100644 --- a/stdlib/source/library/lux/data/collection/bits.lux +++ b/stdlib/source/library/lux/data/collection/bits.lux @@ -17,13 +17,13 @@  (type: #export Chunk    I64) -(def: #export chunk-size +(def: #export chunk_size    i64.width)  (type: #export Bits    (Array Chunk)) -(def: empty-chunk +(def: empty_chunk    Chunk    (.i64 0)) @@ -40,7 +40,7 @@  (def: #export (capacity bits)    (-> Bits Nat) -  (|> bits array.size (n.* chunk-size))) +  (|> bits array.size (n.* chunk_size)))  (def: #export empty?    (-> Bits Bit) @@ -48,38 +48,38 @@  (def: #export (get index bits)    (-> Nat Bits Bit) -  (let [[chunk-index bit-index] (n./% chunk-size index)] -    (.and (n.< (array.size bits) chunk-index) -          (|> (array.read chunk-index bits) -              (maybe.default empty-chunk) -              (i64.set? bit-index))))) +  (let [[chunk_index bit_index] (n./% chunk_size index)] +    (.and (n.< (array.size bits) chunk_index) +          (|> (array.read chunk_index bits) +              (maybe.default empty_chunk) +              (i64.set? bit_index)))))  (def: (chunk idx bits)    (-> Nat Bits Chunk)    (if (n.< (array.size bits) idx) -    (|> bits (array.read idx) (maybe.default empty-chunk)) -    empty-chunk)) +    (|> bits (array.read idx) (maybe.default empty_chunk)) +    empty_chunk))  (template [<name> <op>]    [(def: #export (<name> index input)       (-> Nat Bits Bits) -     (let [[chunk-index bit-index] (n./% chunk-size index)] -       (loop [size|output (n.max (inc chunk-index) +     (let [[chunk_index bit_index] (n./% chunk_size index)] +       (loop [size|output (n.max (inc chunk_index)                                   (array.size input))                output ..empty]           (let [idx|output (dec size|output)]             (if (n.> 0 size|output)               (case (|> (..chunk idx|output input) -                       (cond> [(new> (n.= chunk-index idx|output) [])] -                              [(<op> bit-index)] +                       (cond> [(new> (n.= chunk_index idx|output) [])] +                              [(<op> bit_index)]                                ## else                                [])                         .nat)                 0 -               ## TODO: Remove 'no-op' once new-luxc is the official compiler. -               (let [no-op (recur (dec size|output) output)] -                 no-op) +               ## TODO: Remove 'no_op' once new-luxc is the official compiler. +               (let [no_op (recur (dec size|output) output)] +                 no_op)                 chunk                 (|> (if (is? ..empty output) @@ -102,7 +102,7 @@        (if (n.< chunks idx)          (.or (|> (..chunk idx sample)                   (i64.and (..chunk idx reference)) -                 ("lux i64 =" empty-chunk) +                 ("lux i64 =" empty_chunk)                   .not)               (recur (inc idx)))          #0)))) diff --git a/stdlib/source/library/lux/data/collection/dictionary.lux b/stdlib/source/library/lux/data/collection/dictionary.lux index 3ae286db8..02d733d80 100644 --- a/stdlib/source/library/lux/data/collection/dictionary.lux +++ b/stdlib/source/library/lux/data/collection/dictionary.lux @@ -174,14 +174,14 @@             (i64.right_shift level hash)))  ## A mechanism to go from indices to bit-positions. -(def: (->bit_position index) +(def: (to_bit_position index)    (-> Index BitPosition)    (i64.left_shift index 1))  ## The bit-position within a base that a given hash-code would have.  (def: (bit_position level hash)    (-> Level Hash_Code BitPosition) -  (->bit_position (level_index level hash))) +  (to_bit_position (level_index level hash)))  (def: (bit_position_is_set? bit bitmap)    (-> BitPosition BitMap Bit) @@ -241,7 +241,7 @@                                    (#.Some sub_node) (if (n.= except_idx idx)                                                        [insertion_idx node]                                                        [(inc insertion_idx) -                                                       [(set_bit_position (->bit_position idx) bitmap) +                                                       [(set_bit_position (to_bit_position idx) bitmap)                                                          (array.write! insertion_idx (#.Left sub_node) base)]])                                    )))                              [0 [clean_bitmap @@ -259,7 +259,7 @@          BitMap (Base k v)          (Array (Node k v))))    (product.right (list\fold (function (_ hierarchy_idx (^@ default [base_idx h_array])) -                              (if (bit_position_is_set? (->bit_position hierarchy_idx) +                              (if (bit_position_is_set? (to_bit_position hierarchy_idx)                                                          bitmap)                                  [(inc base_idx)                                   (case (array.read base_idx base) diff --git a/stdlib/source/library/lux/data/collection/tree.lux b/stdlib/source/library/lux/data/collection/tree.lux index f6b3746e7..6ed986476 100644 --- a/stdlib/source/library/lux/data/collection/tree.lux +++ b/stdlib/source/library/lux/data/collection/tree.lux @@ -35,11 +35,11 @@    {#value value     #children children}) -(type: #rec Tree-Code -  [Code (List Tree-Code)]) +(type: #rec Tree_Code +  [Code (List Tree_Code)])  (def: tree^ -  (Parser Tree-Code) +  (Parser Tree_Code)    (|> (|>> <>.some             <c>.record             (<>.and <c>.any)) diff --git a/stdlib/source/library/lux/data/collection/tree/zipper.lux b/stdlib/source/library/lux/data/collection/tree/zipper.lux index bb36e3e38..942ca5c09 100644 --- a/stdlib/source/library/lux/data/collection/tree/zipper.lux +++ b/stdlib/source/library/lux/data/collection/tree/zipper.lux @@ -112,7 +112,7 @@                                               rights))                         parent)))))) -(template [<one> <all> <side> <op-side>] +(template [<one> <all> <side> <op_side>]    [(def: #export (<one> zipper)       (All [a] (-> (Zipper a) (Maybe (Zipper a))))       (case (get@ #family zipper) @@ -122,12 +122,12 @@           (#.Some (for {@.old                         {#family (#.Some (|> family                                              (set@ <side> side') -                                            (update@ <op-side> (|>> (#.Cons (get@ #node zipper)))))) +                                            (update@ <op_side> (|>> (#.Cons (get@ #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> (|>> (#.Cons (get@ #node zipper)))))))] +                                           (update@ <op_side> (|>> (#.Cons (get@ #node zipper)))))))]                          {#family (#.Some (move side' zipper family))                           #node next}))) @@ -151,13 +151,13 @@           (#.Cons last prevs)           (#.Some (for {@.old {#family (#.Some (|> family                                                    (set@ <side> #.Nil) -                                                  (update@ <op-side> (|>> (#.Cons (get@ #node zipper)) +                                                  (update@ <op_side> (|>> (#.Cons (get@ #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> #.Nil) -                                           (update@ <op-side> (|>> (#.Cons (get@ #node zipper)) +                                           (update@ <op_side> (|>> (#.Cons (get@ #node zipper))                                                                     (list\compose prevs))))))]                          {#family (#.Some (move prevs zipper family))                           #node last}))))))] @@ -281,8 +281,8 @@                       (#.Some (update@ <side> (|>> (#.Cons (//.leaf value))) family))                       zipper))))] -  [insert-left  #lefts] -  [insert-right #rights] +  [insert_left  #lefts] +  [insert_right #rights]    )  (implementation: #export functor @@ -304,15 +304,15 @@    (def: unwrap (get@ [#node #//.value]))    (def: (split (^slots [#family #node])) -    (let [tree-splitter (: (All [a] (-> (Tree a) (Tree (Zipper a)))) -                           (function (tree-splitter tree) +    (let [tree_splitter (: (All [a] (-> (Tree a) (Tree (Zipper a)))) +                           (function (tree_splitter tree)                               {#//.value (..zip tree)                                #//.children (|> tree                                                 (get@ #//.children) -                                               (list\map tree-splitter))}))] +                                               (list\map tree_splitter))}))]        {#family (maybe\map (function (_ (^slots [#parent #lefts #rights]))                              {#parent (split parent) -                             #lefts (list\map tree-splitter lefts) -                             #rights (list\map tree-splitter rights)}) +                             #lefts (list\map tree_splitter lefts) +                             #rights (list\map tree_splitter rights)})                            family) -       #node (tree-splitter node)}))) +       #node (tree_splitter node)}))) diff --git a/stdlib/source/library/lux/data/maybe.lux b/stdlib/source/library/lux/data/maybe.lux index d7f010f13..ed6a875ce 100644 --- a/stdlib/source/library/lux/data/maybe.lux +++ b/stdlib/source/library/lux/data/maybe.lux @@ -141,7 +141,7 @@    (All [a] (-> (Maybe a) a))    (|>> (..default (undefined)))) -(def: #export (to-list value) +(def: #export (to_list value)    (All [a] (-> (Maybe a) (List a)))    (case value      #.None diff --git a/stdlib/source/library/lux/ffi.old.lux b/stdlib/source/library/lux/ffi.old.lux index fdb5d1412..c8de0eb03 100644 --- a/stdlib/source/library/lux/ffi.old.lux +++ b/stdlib/source/library/lux/ffi.old.lux @@ -424,7 +424,7 @@      ast'      ast')) -(def: (parser->replacer p ast) +(def: (parser_to_replacer p ast)    (-> (Parser Code) (-> Code Code))    (case (<>.run p (list ast))      (#.Right [#.Nil ast']) @@ -434,7 +434,7 @@      ast      )) -(def: (field->parser class_name [[field_name _ _] field]) +(def: (field_to_parser class_name [[field_name _ _] field])    (-> Text [Member_Declaration FieldDecl] (Parser Code))    (case field      (#ConstantField _) @@ -481,7 +481,7 @@    [make_virtual_method_parser "jvm invokevirtual"]    ) -(def: (method->parser params class_name [[method_name _ _] meth_def]) +(def: (method_to_parser params class_name [[method_name _ _] meth_def])    (-> (List Type_Parameter) Text [Member_Declaration Method_Definition] (Parser Code))    (case meth_def      (#ConstructorMethod strict? type_vars args constructor_args return_expr exs) @@ -1092,16 +1092,16 @@                                                                   (~ body))))))))      (#OverridenMethod strict_fp? class_decl type_vars this_name arg_decls return_type body exs) -    (let [super_replacer (parser->replacer (<code>.form (do <>.monad -                                                          [_ (<code>.this! (' ::super!)) -                                                           args (<code>.tuple (<>.exactly (list.size arg_decls) <code>.any)) -                                                           #let [arg_decls' (: (List Text) (list\map (|>> product.right (simple_class$ (list))) -                                                                                                     arg_decls))]] -                                                          (wrap (`' ((~ (code.text (format "jvm invokespecial" -                                                                                           ":" (get@ #super_class_name super_class) -                                                                                           ":" name -                                                                                           ":" (text.join_with "," arg_decls')))) -                                                                     (~' _jvm_this) (~+ args)))))))] +    (let [super_replacer (parser_to_replacer (<code>.form (do <>.monad +                                                            [_ (<code>.this! (' ::super!)) +                                                             args (<code>.tuple (<>.exactly (list.size arg_decls) <code>.any)) +                                                             #let [arg_decls' (: (List Text) (list\map (|>> product.right (simple_class$ (list))) +                                                                                                       arg_decls))]] +                                                            (wrap (`' ((~ (code.text (format "jvm invokespecial" +                                                                                             ":" (get@ #super_class_name super_class) +                                                                                             ":" name +                                                                                             ":" (text.join_with "," arg_decls')))) +                                                                       (~' _jvm_this) (~+ args)))))))]        (with_parens          (spaced (list "override"                        (class_decl$ class_decl) @@ -1210,11 +1210,11 @@    (do meta.monad      [current_module meta.current_module_name       #let [fully_qualified_class_name (format (sanitize current_module) "." full_class_name) -           field_parsers (list\map (field->parser fully_qualified_class_name) fields) -           method_parsers (list\map (method->parser (product.right class_decl) fully_qualified_class_name) methods) -           replacer (parser->replacer (list\fold <>.either -                                                 (<>.fail "") -                                                 (list\compose field_parsers method_parsers))) +           field_parsers (list\map (field_to_parser fully_qualified_class_name) fields) +           method_parsers (list\map (method_to_parser (product.right class_decl) fully_qualified_class_name) methods) +           replacer (parser_to_replacer (list\fold <>.either +                                                   (<>.fail "") +                                                   (list\compose field_parsers method_parsers)))             def_code (format "jvm class:"                              (spaced (list (class_decl$ class_decl)                                            (super_class_decl$ super) @@ -1449,7 +1449,7 @@      #.Nil #1      _     #0)) -(def: (type_param->type_arg [name _]) +(def: (type_param_to_type_arg [name _])    (-> Type_Parameter Code)    (code.identifier ["" name])) @@ -1498,7 +1498,7 @@          full_name (sanitize full_name)          all_params (|> (member_type_vars class_tvars member)                         (list.filter free_type_param?) -                       (list\map type_param->type_arg))] +                       (list\map type_param_to_type_arg))]      (case member        (#EnumDecl enum_members)        (do {! meta.monad} @@ -1510,7 +1510,7 @@                                _                                (let [=class_tvars (|> class_tvars                                                       (list.filter free_type_param?) -                                                     (list\map type_param->type_arg))] +                                                     (list\map type_param_to_type_arg))]                                  (` (All [(~+ =class_tvars)] (primitive (~ (code.text full_name)) [(~+ =class_tvars)]))))))                 getter_interop (: (-> Text Code)                                   (function (_ name) @@ -1576,7 +1576,7 @@                 tvar_asts (: (List Code)                              (|> class_tvars                                  (list.filter free_type_param?) -                                (list\map type_param->type_arg))) +                                (list\map type_param_to_type_arg)))                 getter_name (code.identifier ["" (..import_name import_format method_prefix import_field_name)])                 setter_name (code.identifier ["" (..import_name import_format method_prefix (format import_field_name "!"))])]           getter_interop (with_gensyms [g!obj] @@ -1740,7 +1740,7 @@                (array_length my_array))}    (wrap (list (` ("jvm arraylength" (~ array)))))) -(def: (type->class_name type) +(def: (type_to_class_name type)    (-> Type (Meta Text))    (if (type\= Any type)      (\ meta.monad wrap "java.lang.Object") @@ -1754,10 +1754,10 @@          (meta.fail (format "Cannot apply type: " (type.format F) " to " (type.format A)))          (#.Some type') -        (type->class_name type')) +        (type_to_class_name type'))        (#.Named _ type') -      (type->class_name type') +      (type_to_class_name type')        _        (meta.fail (format "Cannot convert to JvmType: " (type.format type)))))) @@ -1769,7 +1769,7 @@      [_ (#.Identifier array_name)]      (do meta.monad        [array_type (meta.find_type array_name) -       array_jvm_type (type->class_name array_type)] +       array_jvm_type (type_to_class_name array_type)]        (case array_jvm_type          (^template [<type> <array_op>]            [<type> @@ -1798,7 +1798,7 @@      [_ (#.Identifier array_name)]      (do meta.monad        [array_type (meta.find_type array_name) -       array_jvm_type (type->class_name array_type)] +       array_jvm_type (type_to_class_name array_type)]        (case array_jvm_type          (^template [<type> <array_op>]            [<type> diff --git a/stdlib/source/library/lux/ffi.rb.lux b/stdlib/source/library/lux/ffi.rb.lux index 511351bad..f3f483e23 100644 --- a/stdlib/source/library/lux/ffi.rb.lux +++ b/stdlib/source/library/lux/ffi.rb.lux @@ -27,7 +27,7 @@  (template [<name>]    [(with_expansions [<brand> (template.identifier [<name> "'"])] -     (abstract: #export <brand> Any) +     (abstract: <brand> Any)       (type: #export <name>         (..Object <brand>)))] diff --git a/stdlib/source/library/lux/math/number/int.lux b/stdlib/source/library/lux/math/number/int.lux index c72c31e16..b5806e0db 100644 --- a/stdlib/source/library/lux/math/number/int.lux +++ b/stdlib/source/library/lux/math/number/int.lux @@ -131,7 +131,7 @@      +0 a      _ (gcd b (..% b a)))) -(def: #export (co-prime? a b) +(def: #export (co_prime? a b)    (-> Int Int Bit)    (..= +1 (..gcd a b))) diff --git a/stdlib/source/library/lux/math/number/nat.lux b/stdlib/source/library/lux/math/number/nat.lux index 52e252c84..ebec1b4e9 100644 --- a/stdlib/source/library/lux/math/number/nat.lux +++ b/stdlib/source/library/lux/math/number/nat.lux @@ -130,7 +130,7 @@      0 a      _ (gcd b (..% b a)))) -(def: #export (co-prime? a b) +(def: #export (co_prime? a b)    (-> Nat Nat Bit)    (..= 1 (..gcd a b))) @@ -194,21 +194,21 @@    [maximum        ..max (\ ..interval bottom)]    ) -(def: (binary-character value) +(def: (binary_character value)    (-> Nat Text)    (case value      0 "0"      1 "1"      _ (undefined))) -(def: (binary-value digit) +(def: (binary_value digit)    (-> Nat (Maybe Nat))    (case digit      (^ (char "0")) (#.Some 0)      (^ (char "1")) (#.Some 1)      _ #.None)) -(def: (octal-character value) +(def: (octal_character value)    (-> Nat Text)    (case value      0 "0" @@ -221,7 +221,7 @@      7 "7"      _ (undefined))) -(def: (octal-value digit) +(def: (octal_value digit)    (-> Nat (Maybe Nat))    (case digit      (^ (char "0")) (#.Some 0) @@ -234,7 +234,7 @@      (^ (char "7")) (#.Some 7)      _ #.None)) -(def: (decimal-character value) +(def: (decimal_character value)    (-> Nat Text)    (case value      0 "0" @@ -249,7 +249,7 @@      9 "9"      _ (undefined))) -(def: (decimal-value digit) +(def: (decimal_value digit)    (-> Nat (Maybe Nat))    (case digit      (^ (char "0")) (#.Some 0) @@ -264,7 +264,7 @@      (^ (char "9")) (#.Some 9)      _ #.None)) -(def: (hexadecimal-character value) +(def: (hexadecimal_character value)    (-> Nat Text)    (case value      0 "0" @@ -285,7 +285,7 @@      15 "F"      _ (undefined))) -(def: (hexadecimal-value digit) +(def: (hexadecimal_value digit)    (-> Nat (Maybe Nat))    (case digit      (^template [<character> <number>] @@ -336,9 +336,9 @@                 (#try.Success output)))             (#try.Failure ("lux text concat" <error> repr))))))] -  [1 binary binary-character      binary-value      "Invalid binary syntax for Nat: "] -  [3 octal  octal-character       octal-value       "Invalid octal syntax for Nat: "] -  [4 hex    hexadecimal-character hexadecimal-value "Invalid hexadecimal syntax for Nat: "] +  [1 binary binary_character      binary_value      "Invalid binary syntax for Nat: "] +  [3 octal  octal_character       octal_value       "Invalid octal syntax for Nat: "] +  [4 hex    hexadecimal_character hexadecimal_value "Invalid hexadecimal syntax for Nat: "]    )  (implementation: #export decimal @@ -347,7 +347,7 @@    (def: (encode value)      (loop [input value             output ""] -      (let [digit (decimal-character (..% 10 input)) +      (let [digit (decimal_character (..% 10 input))              output' ("lux text concat" digit output)]          (case (../ 10 input)            0 @@ -363,7 +363,7 @@            (loop [idx 0                   output 0]              (if (..< input-size idx) -              (case (decimal-value ("lux text char" idx repr)) +              (case (decimal_value ("lux text char" idx repr))                  #.None                  <failure> diff --git a/stdlib/source/library/lux/time/year.lux b/stdlib/source/library/lux/time/year.lux index 95280df9c..b3f3e7ecf 100644 --- a/stdlib/source/library/lux/time/year.lux +++ b/stdlib/source/library/lux/time/year.lux @@ -32,7 +32,7 @@      year      (dec year))) -(exception: #export there-is-no-year-0) +(exception: #export there_is_no_year_0)  (abstract: #export Year    Int @@ -40,7 +40,7 @@    (def: #export (year value)      (-> Int (Try Year))      (case value -      +0 (exception.throw ..there-is-no-year-0 []) +      +0 (exception.throw ..there_is_no_year_0 [])        _ (#try.Success (:abstraction (..internal value)))))    (def: #export value @@ -80,9 +80,9 @@           (or (not (..divisible? (.int ..century) year))               (..divisible? (.int ..era) year))))) -(def: (with-year-0-leap year days) -  (let [after-year-0? (i.> +0 year)] -    (if after-year-0? +(def: (with_year_0_leap year days) +  (let [after_year_0? (i.> +0 year)] +    (if after_year_0?        (i.+ +1 days)        days))) @@ -100,7 +100,7 @@                    [i.- ..century]                    [i.+ ..era]                    )) -            (..with-year-0-leap year))))) +            (..with_year_0_leap year)))))  (def: (encode year)    (-> Year Text) @@ -114,10 +114,10 @@    (do {! <>.monad}      [sign (<>.or (<t>.this "-") (wrap []))       digits (<t>.many <t>.decimal) -     raw-year (<>.codec i.decimal (wrap (text\compose "+" digits)))] +     raw_year (<>.codec i.decimal (wrap (text\compose "+" digits)))]      (<>.lift (..year (case sign -                       (#.Left _)  (i.* -1 raw-year) -                       (#.Right _) raw-year))))) +                       (#.Left _)  (i.* -1 raw_year) +                       (#.Right _) raw_year)))))  (implementation: #export codec    {#.doc (doc "Based on ISO 8601." 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 b46934a86..079fc96ec 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 @@ -1021,7 +1021,7 @@                                       list\join                                       ## Remove duplicates.                                       (set.from-list //////synthesis.hash) -                                     set.to-list) +                                     set.to_list)                 global-mapping (|> total-environment                                    ## Give them names as "foreign" variables.                                    list.enumeration 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 ea5ce1006..39edd668e 100644 --- a/stdlib/source/library/lux/tool/compiler/meta/archive/document.lux +++ b/stdlib/source/library/lux/tool/compiler/meta/archive/document.lux @@ -20,7 +20,7 @@     ["." key (#+ Key)]     [descriptor (#+ Module)]]) -(exception: #export (invalid-signature {expected Signature} {actual Signature}) +(exception: #export (invalid_signature {expected Signature} {actual Signature})    (exception.report     ["Expected" (signature.description expected)]     ["Actual" (signature.description actual)])) @@ -41,7 +41,7 @@                                e                                (:assume document//content))) -        (exception.throw ..invalid-signature [(key.signature key) +        (exception.throw ..invalid_signature [(key.signature key)                                                document//signature]))))    (def: #export (write key content) diff --git a/stdlib/source/library/lux/world/output/video/resolution.lux b/stdlib/source/library/lux/world/output/video/resolution.lux index 24f48182c..8822c268c 100644 --- a/stdlib/source/library/lux/world/output/video/resolution.lux +++ b/stdlib/source/library/lux/world/output/video/resolution.lux @@ -43,5 +43,5 @@    [fhd        1920 1080]    [wuxga      1920 1200]    [wqhd       2560 1440] -  [uhd-4k     3840 2160] +  [uhd_4k     3840 2160]    ) diff --git a/stdlib/source/program/aedifex/artifact/time.lux b/stdlib/source/program/aedifex/artifact/time.lux index 41ee0d418..ec7ddc4a9 100644 --- a/stdlib/source/program/aedifex/artifact/time.lux +++ b/stdlib/source/program/aedifex/artifact/time.lux @@ -26,6 +26,12 @@    Time    [/date.epoch time.midnight]) +(def: #export (instant time) +  (-> Time Instant) +  (let [[date time] time] +    (instant.from_date_time (/date.value date) +                            time))) +  (def: #export (from_instant instant)    (-> Instant (Try Time))    (do try.monad diff --git a/stdlib/source/specification/compositor/generation/structure.lux b/stdlib/source/specification/compositor/generation/structure.lux index 7c45d2a9b..c8482aff2 100644 --- a/stdlib/source/specification/compositor/generation/structure.lux +++ b/stdlib/source/specification/compositor/generation/structure.lux @@ -76,7 +76,7 @@                           (and (n.= size (array.size tuple-out))                                (list.every? (function (_ [left right])                                               (i.= left (:as Int right))) -                                           (list.zip/2 tuple-in (array.to-list tuple-out))))) +                                           (list.zip/2 tuple-in (array.to_list tuple-out)))))                         (#try.Failure _)                         false))))) diff --git a/stdlib/source/specification/lux/abstract/comonad.lux b/stdlib/source/specification/lux/abstract/comonad.lux index 85d00b8f2..d4532a70b 100644 --- a/stdlib/source/specification/lux/abstract/comonad.lux +++ b/stdlib/source/specification/lux/abstract/comonad.lux @@ -13,7 +13,7 @@    [//     [functor (#+ Injection Comparison)]]) -(def: (left-identity injection (^open "_//.")) +(def: (left_identity injection (^open "_//."))    (All [f] (-> (Injection f) (CoMonad f) Test))    (do {! random.monad}      [sample random.nat @@ -25,7 +25,7 @@              (n.= (morphism start)                   (|> start _//split (_//map morphism) _//unwrap))))) -(def: (right-identity injection comparison (^open "_//.")) +(def: (right_identity injection comparison (^open "_//."))    (All [f] (-> (Injection f) (Comparison f) (CoMonad f) Test))    (do random.monad      [sample random.nat @@ -55,7 +55,7 @@    (All [f] (-> (Injection f) (Comparison f) (CoMonad f) Test))    (<| (_.for [/.CoMonad])        ($_ _.and -          (..left-identity injection subject) -          (..right-identity injection comparison subject) +          (..left_identity injection subject) +          (..right_identity injection comparison subject)            (..associativity injection comparison subject)            ))) diff --git a/stdlib/source/specification/lux/abstract/monad.lux b/stdlib/source/specification/lux/abstract/monad.lux index 869eb24c7..bc1b643f2 100644 --- a/stdlib/source/specification/lux/abstract/monad.lux +++ b/stdlib/source/specification/lux/abstract/monad.lux @@ -11,7 +11,7 @@    [//     [functor (#+ Injection Comparison)]]) -(def: (left-identity injection comparison (^open "_//.")) +(def: (left_identity injection comparison (^open "_//."))    (All [f] (-> (Injection f) (Comparison f) (/.Monad f) Test))    (do {! random.monad}      [sample random.nat @@ -23,7 +23,7 @@               (|> (injection sample) (_//map morphism) _//join)               (morphism sample))))) -(def: (right-identity injection comparison (^open "_//.")) +(def: (right_identity injection comparison (^open "_//."))    (All [f] (-> (Injection f) (Comparison f) (/.Monad f) Test))    (do random.monad      [sample random.nat] @@ -51,7 +51,7 @@    (All [f] (-> (Injection f) (Comparison f) (/.Monad f) Test))    (<| (_.for [/.Monad])        ($_ _.and -          (..left-identity injection comparison monad) -          (..right-identity injection comparison monad) +          (..left_identity injection comparison monad) +          (..right_identity injection comparison monad)            (..associativity injection comparison monad)            ))) diff --git a/stdlib/source/test/aedifex/artifact.lux b/stdlib/source/test/aedifex/artifact.lux index 6afbbf27c..ce0af7e7f 100644 --- a/stdlib/source/test/aedifex/artifact.lux +++ b/stdlib/source/test/aedifex/artifact.lux @@ -6,7 +6,9 @@       [monad (#+ do)]       [hash (#+ Hash)]       [\\specification -      ["$." equivalence]]] +      ["$." equivalence] +      ["$." order] +      ["$." hash]]]      [control       [concurrency        [promise (#+ Promise)]]] @@ -37,11 +39,21 @@  (def: #export test    Test    (<| (_.covering /._) +      (do random.monad +        [sample ..random])        (_.for [/.Group /.Name /.Version                /.Artifact]               ($_ _.and                   (_.for [/.equivalence]                          ($equivalence.spec /.equivalence ..random)) +                 (_.for [/.order] +                        ($order.spec /.order ..random)) +                 (_.for [/.hash] +                        ($hash.spec /.hash ..random)) + +                 (_.cover [/.format /.identity] +                          (and (text.ends_with? (/.identity sample) (/.format sample)) +                               (not (text\= (/.identity sample) (/.format sample)))))                   /extension.test                   /snapshot.test diff --git a/stdlib/source/test/aedifex/artifact/extension.lux b/stdlib/source/test/aedifex/artifact/extension.lux index fd28c5d92..b8a2144aa 100644 --- a/stdlib/source/test/aedifex/artifact/extension.lux +++ b/stdlib/source/test/aedifex/artifact/extension.lux @@ -29,10 +29,12 @@                                  uniques (set.from_list text.hash options)]                              (n.= (list.size options)                                   (set.size uniques)))) -                 (_.cover [/.extension] +                 (_.cover [/.extension /.type]                            (`` (and (~~ (template [<type> <extension>] -                                         [(text\= <extension> -                                                  (/.extension <type>))] +                                         [(and (text\= <extension> +                                                       (/.extension <type>)) +                                               (text\= <type> +                                                       (/.type (/.extension <type>))))]                                           [//.lux_library /.lux_library]                                           [//.jvm_library /.jvm_library] diff --git a/stdlib/source/test/aedifex/artifact/time.lux b/stdlib/source/test/aedifex/artifact/time.lux index f69566096..131155500 100644 --- a/stdlib/source/test/aedifex/artifact/time.lux +++ b/stdlib/source/test/aedifex/artifact/time.lux @@ -10,6 +10,8 @@       ["." try ("#\." functor)]       [parser        ["<.>" text]]] +    [time +     ["." instant ("#\." equivalence)]]      [math       ["." random (#+ Random)]       [number @@ -43,6 +45,16 @@                           (<text>.run /.parser)                           (try\map (\ /.equivalence = expected))                           (try.default false)))) +          (do random.monad +            [expected ..random] +            (_.cover [/.instant /.from_instant] +                     (|> expected +                         /.instant +                         /.from_instant +                         (try\map (\ /.equivalence = expected)) +                         (try.default false)))) +          (_.cover [/.epoch] +                   (instant\= instant.epoch (/.instant /.epoch)))            /date.test            /time.test diff --git a/stdlib/source/test/lux/abstract/fold.lux b/stdlib/source/test/lux/abstract/fold.lux index 787a8a03d..a07a19870 100644 --- a/stdlib/source/test/lux/abstract/fold.lux +++ b/stdlib/source/test/lux/abstract/fold.lux @@ -20,7 +20,7 @@      [samples (random.list 10 random.nat)]      (<| (_.covering /._)          ($_ _.and -            (_.cover [/.with-monoid] +            (_.cover [/.with_monoid]                       (n.= (\ list.fold fold (\ n.addition compose) (\ n.addition identity) samples) -                          (/.with-monoid n.addition list.fold samples))) +                          (/.with_monoid n.addition list.fold samples)))              )))) diff --git a/stdlib/source/test/lux/control/exception.lux b/stdlib/source/test/lux/control/exception.lux index f62ad9271..534d03252 100644 --- a/stdlib/source/test/lux/control/exception.lux +++ b/stdlib/source/test/lux/control/exception.lux @@ -16,11 +16,11 @@      [//       ["." try (#+ Try)]]]]) -(exception: an-exception) -(exception: another-exception) +(exception: an_exception) +(exception: another_exception)  (def: label "YOLO") -(exception: (custom-exception {value Nat}) +(exception: (custom_exception {value Nat})    (/.report [label (%.nat value)]))  (def: #export test @@ -28,12 +28,12 @@    (do {! random.monad}      [expected random.nat       wrong (|> random.nat (random.filter (|>> (n.= expected) not))) -     assertion-succeeded? random.bit -     #let [report-element (\ ! map %.nat random.nat)] -     field0 report-element -     value0 report-element -     field1 report-element -     value1 report-element] +     assertion_succeeded? random.bit +     #let [report_element (\ ! map %.nat random.nat)] +     field0 report_element +     value0 report_element +     field1 report_element +     value1 report_element]      (<| (_.covering /._)          (_.for [/.Exception])          ($_ _.and @@ -42,41 +42,41 @@                         (#try.Success actual) (n.= expected actual)                         (#try.Failure _) false))              (_.cover [/.throw] -                     (case (/.throw ..an-exception []) +                     (case (/.throw ..an_exception [])                         (#try.Success _) false                         (#try.Failure _) true))              (_.cover [/.construct] -                     (case (/.throw ..an-exception []) +                     (case (/.throw ..an_exception [])                         (#try.Success _)                         false                         (#try.Failure message) -                       (text\= message (/.construct ..an-exception [])))) +                       (text\= message (/.construct ..an_exception []))))              (_.cover [/.match?] -                     (/.match? ..an-exception -                               (/.construct ..an-exception []))) +                     (/.match? ..an_exception +                               (/.construct ..an_exception [])))              (_.cover [/.assert] -                     (case (/.assert ..an-exception [] assertion-succeeded?) +                     (case (/.assert ..an_exception [] assertion_succeeded?)                         (#try.Success _) -                       assertion-succeeded? +                       assertion_succeeded?                         (#try.Failure message) -                       (and (not assertion-succeeded?) -                            (text\= message (/.construct ..an-exception []))))) +                       (and (not assertion_succeeded?) +                            (text\= message (/.construct ..an_exception [])))))              (_.cover [/.catch]                       (and (n.= expected -                               (|> (/.throw ..an-exception []) -                                   (/.catch ..an-exception (function (_ ex) expected)) +                               (|> (/.throw ..an_exception []) +                                   (/.catch ..an_exception (function (_ ex) expected))                                     (/.otherwise (function (_ ex) wrong))))                            (n.= expected -                               (|> (/.throw ..another-exception []) -                                   (/.catch ..an-exception (function (_ ex) wrong)) -                                   (/.catch ..another-exception (function (_ ex) expected)) +                               (|> (/.throw ..another_exception []) +                                   (/.catch ..an_exception (function (_ ex) wrong)) +                                   (/.catch ..another_exception (function (_ ex) expected))                                     (/.otherwise (function (_ ex) wrong))))))              (_.cover [/.otherwise]                       (n.= expected -                          (|> (/.throw ..another-exception []) -                              (/.catch ..an-exception (function (_ ex) wrong)) +                          (|> (/.throw ..another_exception []) +                              (/.catch ..an_exception (function (_ ex) wrong))                                (/.otherwise (function (_ ex) expected)))))              (_.cover [/.report]                       (let [report (/.report [field0 value0] @@ -92,23 +92,23 @@                              (text.contains? field1 enumeration)                              (text.contains? value1 enumeration))))              (_.cover [/.with] -                     (and (case (/.with ..an-exception [] (#try.Success expected)) +                     (and (case (/.with ..an_exception [] (#try.Success expected))                              (#try.Success actual) (n.= expected actual)                              (#try.Failure _) false) -                          (case (/.with ..an-exception [] (#try.Failure "")) +                          (case (/.with ..an_exception [] (#try.Failure ""))                              (#try.Success _) false -                            (#try.Failure message) (text\= message (/.construct ..an-exception []))) -                          (case (/.with ..an-exception [] +                            (#try.Failure message) (text\= message (/.construct ..an_exception []))) +                          (case (/.with ..an_exception []                                    (: (Try Nat) -                                     (/.throw ..another-exception []))) +                                     (/.throw ..another_exception [])))                              (#try.Success _)                              false                              (#try.Failure message) -                            (and (text.contains? (/.construct ..an-exception []) message) -                                 (text.contains? (/.construct ..another-exception []) message))))) +                            (and (text.contains? (/.construct ..an_exception []) message) +                                 (text.contains? (/.construct ..another_exception []) message)))))              (_.cover [/.exception:] -                     (case (/.throw ..custom-exception [expected]) +                     (case (/.throw ..custom_exception [expected])                         (#try.Success _)                         false diff --git a/stdlib/source/test/lux/control/function/mixin.lux b/stdlib/source/test/lux/control/function/mixin.lux index 339216526..31b1e338d 100644 --- a/stdlib/source/test/lux/control/function/mixin.lux +++ b/stdlib/source/test/lux/control/function/mixin.lux @@ -123,9 +123,9 @@                                       (|> input function (state.run dummy) product.right))))                       ))            (_.for [/.Recursive] -                 (_.cover [/.from-recursive] +                 (_.cover [/.from_recursive]                            (let [factorial (/.mixin -                                           (/.from-recursive +                                           (/.from_recursive                                              (function (_ recur input)                                                (case input                                                  (^or 0 1) 1 diff --git a/stdlib/source/test/lux/control/parser/tree.lux b/stdlib/source/test/lux/control/parser/tree.lux index 62c4ab04e..e330464b4 100644 --- a/stdlib/source/test/lux/control/parser/tree.lux +++ b/stdlib/source/test/lux/control/parser/tree.lux @@ -159,12 +159,12 @@                                         (tree.leaf dummy))))            (do {! random.monad}              [dummy random.nat] -            (_.cover [/.cannot-move-further] +            (_.cover [/.cannot_move_further]                       (`` (and (~~ (template [<parser>]                                      [(|> (/.run <parser>                                                  (tree.leaf dummy))                                           (!expect (^multi (#try.Failure error) -                                                          (exception.match? /.cannot-move-further error))))] +                                                          (exception.match? /.cannot_move_further error))))]                                      [/.down] [/.up]                                      [/.right] [/.left] diff --git a/stdlib/source/test/lux/control/security/capability.lux b/stdlib/source/test/lux/control/security/capability.lux index 2798c21b2..ec2d91d20 100644 --- a/stdlib/source/test/lux/control/security/capability.lux +++ b/stdlib/source/test/lux/control/security/capability.lux @@ -15,11 +15,11 @@    [\\library     ["." /]]) -(/.capability: (Can-Shift a) -  (can-shift [a Nat] [a Nat])) +(/.capability: (Can_Shift a) +  (can_shift [a Nat] [a Nat])) -(/.capability: Can-IO -  (can-io [] (IO Nat))) +(/.capability: Can_IO +  (can_io [] (IO Nat)))  (def: #export test    Test @@ -28,16 +28,16 @@          [shift random.nat           base random.nat           #let [expected (n.+ shift base)] -         pass-through (random.ascii 1)] +         pass_through (random.ascii 1)]          (_.for [/.Capability]                 ($_ _.and                     (_.cover [/.capability: /.use] -                            (let [capability (..can-shift (function (_ [no-op raw]) -                                                            [no-op (n.+ shift raw)])) -                                  [untouched actual] (/.use capability [pass-through base])] -                              (and (is? pass-through untouched) +                            (let [capability (..can_shift (function (_ [no_op raw]) +                                                            [no_op (n.+ shift raw)])) +                                  [untouched actual] (/.use capability [pass_through base])] +                              (and (is? pass_through untouched)                                     (n.= expected actual)))) -                   (wrap (let [capability (..can-io (function (_ _) (io.io expected)))] +                   (wrap (let [capability (..can_io (function (_ _) (io.io expected)))]                             (do promise.monad                               [actual (/.use (/.async capability) [])]                               (_.cover' [/.async] diff --git a/stdlib/source/test/lux/control/state.lux b/stdlib/source/test/lux/control/state.lux index 53622408d..a037f8a91 100644 --- a/stdlib/source/test/lux/control/state.lux +++ b/stdlib/source/test/lux/control/state.lux @@ -20,7 +20,7 @@    [\\library     ["." / (#+ State)]]) -(def: (with-conditions [state output] computation) +(def: (with_conditions [state output] computation)    (-> [Nat Nat] (State Nat Nat) Bit)    (|> computation        (/.run state) @@ -33,23 +33,23 @@       value random.nat]      ($_ _.and          (_.cover [/.State /.get] -                 (with-conditions [state state] +                 (with_conditions [state state]                     /.get))          (_.cover [/.put] -                 (with-conditions [state value] +                 (with_conditions [state value]                     (do /.monad                       [_ (/.put value)]                       /.get)))          (_.cover [/.update] -                 (with-conditions [state (n.* value state)] +                 (with_conditions [state (n.* value state)]                     (do /.monad                       [_ (/.update (n.* value))]                       /.get)))          (_.cover [/.use] -                 (with-conditions [state (inc state)] +                 (with_conditions [state (inc state)]                     (/.use inc)))          (_.cover [/.local] -                 (with-conditions [state (n.* value state)] +                 (with_conditions [state (n.* value state)]                     (/.local (n.* value)                              /.get)))          ))) @@ -92,8 +92,8 @@                       (/.run 0)                       (let> [state' output']                             (n.= limit state')))) -        (_.cover [/.do-while] -                 (|> (/.do-while condition (/.update inc)) +        (_.cover [/.do_while] +                 (|> (/.do_while condition (/.update inc))                       (/.run 0)                       (let> [state' output']                             (or (n.= limit state') @@ -101,7 +101,7 @@                                      (n.= 1 state'))))))          ))) -(def: monad-transformer +(def: monad_transformer    Test    (do random.monad      [state random.nat @@ -128,4 +128,4 @@            ..basics            ..structures            ..loops -          ..monad-transformer))) +          ..monad_transformer))) diff --git a/stdlib/source/test/lux/data/collection/bits.lux b/stdlib/source/test/lux/data/collection/bits.lux index bc59e6b34..3e8b89d2a 100644 --- a/stdlib/source/test/lux/data/collection/bits.lux +++ b/stdlib/source/test/lux/data/collection/bits.lux @@ -59,12 +59,12 @@                  (_.cover [/.flip]                           (and (|> /.empty (/.flip idx) (/.get idx))                                (|> /.empty (/.flip idx) (/.flip idx) (/.get idx) not))) -                (_.cover [/.Chunk /.capacity /.chunk-size] +                (_.cover [/.Chunk /.capacity /.chunk_size]                           (and (n.= 0 (/.capacity /.empty))                                (|> /.empty (/.set idx) /.capacity                                    (n.- idx)                                    (predicate.unite (n.>= 0) -                                                   (n.< /.chunk-size))) +                                                   (n.< /.chunk_size)))                                (let [grown (/.flip idx /.empty)]                                  (and (n.> 0 (/.capacity grown))                                       (is? /.empty (/.flip idx grown)))))) diff --git a/stdlib/source/test/lux/data/collection/tree.lux b/stdlib/source/test/lux/data/collection/tree.lux index ff281844a..a610fdef5 100644 --- a/stdlib/source/test/lux/data/collection/tree.lux +++ b/stdlib/source/test/lux/data/collection/tree.lux @@ -19,12 +19,12 @@    [\\library     ["." / (#+ Tree)]]) -(def: #export (tree gen-value) +(def: #export (tree gen_value)    (All [a] (-> (Random a) (Random [Nat (Tree a)])))    (do {! random.monad} -    [value gen-value -     num-children (\ ! map (n.% 2) random.nat) -     children (random.list num-children (tree gen-value))] +    [value gen_value +     num_children (\ ! map (n.% 2) random.nat) +     children (random.list num_children (tree gen_value))]      (wrap [(|> children                 (list\map product.left)                 (list\fold n.+ 1)) @@ -58,8 +58,8 @@                          (/.flatten (/.leaf expected)))))            (do {! random.monad}              [value random.nat -             num-children (\ ! map (n.% 3) random.nat) -             children (random.list num-children random.nat)] +             num_children (\ ! map (n.% 3) random.nat) +             children (random.list num_children random.nat)]              (_.cover [/.branch]                       (\ (list.equivalence n.equivalence) =                          (list& value children) diff --git a/stdlib/source/test/lux/data/collection/tree/zipper.lux b/stdlib/source/test/lux/data/collection/tree/zipper.lux index 06e53f225..d04b3b8e9 100644 --- a/stdlib/source/test/lux/data/collection/tree/zipper.lux +++ b/stdlib/source/test/lux/data/collection/tree/zipper.lux @@ -231,21 +231,21 @@                                       [/.right]                                       [/.value (n.= dummy) wrap])                                  (maybe.default false))))) -            (_.cover [/.insert-left] +            (_.cover [/.insert_left]                       (|> (tree.branch dummy (list (tree.leaf dummy)))                           /.zip                           (do> maybe.monad                                [/.down] -                              [(/.insert-left expected)] +                              [(/.insert_left expected)]                                [/.left]                                [/.value (n.= expected) wrap])                           (maybe.default false))) -            (_.cover [/.insert-right] +            (_.cover [/.insert_right]                       (|> (tree.branch dummy (list (tree.leaf dummy)))                           /.zip                           (do> maybe.monad                                [/.down] -                              [(/.insert-right expected)] +                              [(/.insert_right expected)]                                [/.right]                                [/.value (n.= expected) wrap])                           (maybe.default false))) @@ -254,7 +254,7 @@                           /.zip                           (do> maybe.monad                                [/.down] -                              [(/.insert-left expected)] +                              [(/.insert_left expected)]                                [/.remove]                                [/.value (n.= expected) wrap])                           (maybe.default false))) diff --git a/stdlib/source/test/lux/data/maybe.lux b/stdlib/source/test/lux/data/maybe.lux index 4f5accd9b..899541f37 100644 --- a/stdlib/source/test/lux/data/maybe.lux +++ b/stdlib/source/test/lux/data/maybe.lux @@ -75,8 +75,8 @@                       (is? value (/.assume (#.Some value)))))            (do random.monad              [value random.nat] -            (_.cover [/.to-list] +            (_.cover [/.to_list]                       (\ (list.equivalence n.equivalence) =                          (list value) -                        (/.to-list (#.Some value))))) +                        (/.to_list (#.Some value)))))            ))) diff --git a/stdlib/source/test/lux/ffi.lua.lux b/stdlib/source/test/lux/ffi.lua.lux index a1f181edc..963d45387 100644 --- a/stdlib/source/test/lux/ffi.lua.lux +++ b/stdlib/source/test/lux/ffi.lua.lux @@ -7,9 +7,7 @@      [control       ["." io]]      [math -     ["." random] -     [number -      ["i" int]]]]] +     ["." random]]]]    [\\library     ["." /]]) diff --git a/stdlib/source/test/lux/ffi.rb.lux b/stdlib/source/test/lux/ffi.rb.lux index c8d4ea6d5..0b57aee7e 100644 --- a/stdlib/source/test/lux/ffi.rb.lux +++ b/stdlib/source/test/lux/ffi.rb.lux @@ -4,22 +4,49 @@      ["_" test (#+ Test)]      [abstract       [monad (#+ do)]] -    [control -     ["." try]] -    [data -     ["." text ("#\." equivalence)]]      [math -     ["." random (#+ Random)] -     [number -      ["." nat] -      ["." frac]]]]] +     ["." random]]]]    [\\library     ["." /]]) +(/.import: File +  ["#::." +   (#static SEPARATOR /.String)]) +  (def: #export test    Test    (do {! random.monad} -    [] +    [boolean random.bit +     integer random.int +     float random.frac +     string (random.ascii/lower 1)]      (<| (_.covering /._) -        (_.test "TBD" -                true)))) +        (`` ($_ _.and +                (~~ (template [<type> <sample>] +                      [(_.cover [<type>] +                                (exec +                                  (: <type> <sample>) +                                  true))] + +                      [/.Boolean boolean] +                      [/.Integer integer] +                      [/.Float float] +                      [/.String string] +                      )) +                (_.for [/.Object] +                       ($_ _.and +                           (~~ (template [<type>] +                                 [(_.cover [<type>] +                                           (exec +                                             (|> [] +                                                 (:as <type>) +                                                 (: (Ex [a] (/.Object a)))) +                                             true))] + +                                 [/.Nil] +                                 [/.Function] +                                 )))) +                (_.cover [/.import:] +                         (is? (..File::SEPARATOR) +                              (..File::SEPARATOR))) +                ))))) diff --git a/stdlib/source/test/lux/math/modular.lux b/stdlib/source/test/lux/math/modular.lux index 090481806..40a091008 100644 --- a/stdlib/source/test/lux/math/modular.lux +++ b/stdlib/source/test/lux/math/modular.lux @@ -93,17 +93,17 @@                                       (/.- zero subject)))))                  (_.cover [/.inverse]                           (let [one (/.modular (/.modulus subject) +1) -                               co-prime? (i.co-prime? (//.divisor (/.modulus subject)) +                               co_prime? (i.co_prime? (//.divisor (/.modulus subject))                                                        (/.value subject))]                             (case (/.inverse subject)                               (#.Some subject^-1) -                             (and co-prime? +                             (and co_prime?                                    (|> subject                                        (/.* subject^-1)                                        (/.= one)))                               #.None -                             (not co-prime?)))) +                             (not co_prime?))))                  (_.cover [/.adapter]                           (<| (try.default false)                               (do try.monad diff --git a/stdlib/source/test/lux/math/number/int.lux b/stdlib/source/test/lux/math/number/int.lux index 9b650e795..1d95a10e5 100644 --- a/stdlib/source/test/lux/math/number/int.lux +++ b/stdlib/source/test/lux/math/number/int.lux @@ -158,9 +158,9 @@                                           (/.* right_k right)))]                             (and same_gcd!                                  bezout_identity!))) -                (_.cover [/.co-prime?] +                (_.cover [/.co_prime?]                           (bit\= (/.= +1 (/.gcd left right)) -                                (/.co-prime? left right))) +                                (/.co_prime? left right)))                  (_.cover [/.lcm]                           (let [lcm (/.lcm left right)]                             (and (/.= +0 (/.% left lcm)) diff --git a/stdlib/source/test/lux/math/number/nat.lux b/stdlib/source/test/lux/math/number/nat.lux index 9577b25db..c9bb2102b 100644 --- a/stdlib/source/test/lux/math/number/nat.lux +++ b/stdlib/source/test/lux/math/number/nat.lux @@ -112,9 +112,9 @@                           (let [gcd (/.gcd left right)]                             (and (/.= 0 (/.% gcd left))                                  (/.= 0 (/.% gcd right))))) -                (_.cover [/.co-prime?] +                (_.cover [/.co_prime?]                           (bit\= (/.= 1 (/.gcd left right)) -                                (/.co-prime? left right))) +                                (/.co_prime? left right)))                  (_.cover [/.lcm]                           (let [lcm (/.lcm left right)]                             (and (/.= 0 (/.% left lcm)) diff --git a/stdlib/source/test/lux/time/year.lux b/stdlib/source/test/lux/time/year.lux index b1e2691db..d97eb8334 100644 --- a/stdlib/source/test/lux/time/year.lux +++ b/stdlib/source/test/lux/time/year.lux @@ -62,13 +62,13 @@                             (#try.Failure _)                             (i.= +0 expected)))                  )) -          (_.cover [/.there-is-no-year-0] +          (_.cover [/.there_is_no_year_0]                     (case (/.year +0)                       (#try.Success _)                       false                       (#try.Failure error) -                     (exception.match? /.there-is-no-year-0 error))) +                     (exception.match? /.there_is_no_year_0 error)))            (_.cover [/.days]                     (n.= (.nat (//duration.query //duration.day //duration.normal_year))                          /.days)) diff --git a/stdlib/source/test/lux/tool/compiler/language/lux/phase/analysis/case.lux b/stdlib/source/test/lux/tool/compiler/language/lux/phase/analysis/case.lux index a1d16b40b..44807af9d 100644 --- a/stdlib/source/test/lux/tool/compiler/language/lux/phase/analysis/case.lux +++ b/stdlib/source/test/lux/tool/compiler/language/lux/phase/analysis/case.lux @@ -144,8 +144,8 @@           variant-name (r.unicode 5)           record-name (|> (r.unicode 5) (r.filter (|>> (text\= variant-name) not)))           size (|> r.nat (\ ! map (|>> (n.% 10) (n.max 2)))) -         variant-tags (|> (r.set text.hash size (r.unicode 5)) (\ ! map set.to-list)) -         record-tags (|> (r.set text.hash size (r.unicode 5)) (\ ! map set.to-list)) +         variant-tags (|> (r.set text.hash size (r.unicode 5)) (\ ! map set.to_list)) +         record-tags (|> (r.set text.hash size (r.unicode 5)) (\ ! map set.to_list))           primitivesTC (r.list size _primitive.primitive)           #let [primitivesT (list\map product.left primitivesTC)                 primitivesC (list\map product.right primitivesTC) diff --git a/stdlib/source/test/lux/tool/compiler/language/lux/phase/analysis/structure.lux b/stdlib/source/test/lux/tool/compiler/language/lux/phase/analysis/structure.lux index 2f0f5d810..d263e3f0d 100644 --- a/stdlib/source/test/lux/tool/compiler/language/lux/phase/analysis/structure.lux +++ b/stdlib/source/test/lux/tool/compiler/language/lux/phase/analysis/structure.lux @@ -231,7 +231,7 @@  (def: variant    (do {! r.monad}      [size (|> r.nat (\ ! map (|>> (n.% 10) (n.max 2)))) -     tags (|> (r.set text.hash size (r.unicode 5)) (\ ! map set.to-list)) +     tags (|> (r.set text.hash size (r.unicode 5)) (\ ! map set.to_list))       choice (|> r.nat (\ ! map (n.% size)))       other-choice (|> r.nat (\ ! map (n.% size)) (r.filter (|>> (n.= choice) not)))       primitives (r.list size _primitive.primitive) @@ -277,7 +277,7 @@  (def: record    (do {! r.monad}      [size (|> r.nat (\ ! map (|>> (n.% 10) (n.max 2)))) -     tags (|> (r.set text.hash size (r.unicode 5)) (\ ! map set.to-list)) +     tags (|> (r.set text.hash size (r.unicode 5)) (\ ! map set.to_list))       primitives (r.list size _primitive.primitive)       module-name (r.unicode 5)       type-name (r.unicode 5) diff --git a/stdlib/source/test/lux/tool/compiler/language/lux/phase/synthesis/case.lux b/stdlib/source/test/lux/tool/compiler/language/lux/phase/synthesis/case.lux index 7cce92462..0a7a9d9c5 100644 --- a/stdlib/source/test/lux/tool/compiler/language/lux/phase/synthesis/case.lux +++ b/stdlib/source/test/lux/tool/compiler/language/lux/phase/synthesis/case.lux @@ -184,7 +184,7 @@    (All [a] (-> (Hash a) (Random a) (Random [a a a a a])))    (|> random-element        (random.set hash 5) -      (\ random.monad map (|>> set.to-list +      (\ random.monad map (|>> set.to_list                                 (case> (^ (list s0 s1 s2 s3 s4))                                        [s0 s1 s2 s3 s4] diff --git a/stdlib/source/test/lux/world/output/video/resolution.lux b/stdlib/source/test/lux/world/output/video/resolution.lux index 671b1952c..a063a23bf 100644 --- a/stdlib/source/test/lux/world/output/video/resolution.lux +++ b/stdlib/source/test/lux/world/output/video/resolution.lux @@ -33,7 +33,7 @@                                         /.fhd                                         /.wuxga                                         /.wqhd -                                       /.uhd-4k)] +                                       /.uhd_4k)]    (def: listing      (List /.Resolution)      (list <resolutions>))  | 
