diff options
Diffstat (limited to '')
| -rw-r--r-- | stdlib/source/lux.lux | 74 | ||||
| -rw-r--r-- | stdlib/source/lux/macro.lux | 22 | ||||
| -rw-r--r-- | stdlib/source/lux/macro/syntax/common.lux | 2 | ||||
| -rw-r--r-- | stdlib/source/lux/macro/syntax/common/reader.lux | 12 | ||||
| -rw-r--r-- | stdlib/source/lux/macro/syntax/common/writer.lux | 4 | ||||
| -rw-r--r-- | stdlib/source/lux/type/abstract.lux | 56 | ||||
| -rw-r--r-- | stdlib/source/lux/type/implicit.lux | 36 | 
7 files changed, 103 insertions, 103 deletions
| diff --git a/stdlib/source/lux.lux b/stdlib/source/lux.lux index cdfe0e313..17eb44933 100644 --- a/stdlib/source/lux.lux +++ b/stdlib/source/lux.lux @@ -484,10 +484,10 @@           #Nil))   (record$ #Nil)) -## (type: Def +## (type: Definition  ##   [Type Code Top]) -("lux def" Def - (#Named ["lux" "Def"] +("lux def" Definition + (#Named ["lux" "Definition"]           (#Product Type (#Product Code Top)))   (record$ (#Cons [(tag$ ["lux" "doc"])                    (text$ "Represents all the data associated with a definition: its type, its annotations, and its value.")] @@ -595,11 +595,11 @@  ## (type: Module  ##   {#module-hash    Nat  ##    #module-aliases (List [Text Text]) -##    #defs           (List [Text Def]) +##    #definitions    (List [Text Definition])  ##    #imports        (List Text)  ##    #tags           (List [Text [Nat (List Ident) Bool Type]])  ##    #types          (List [Text [(List Ident) Bool Type]]) -##    #module-anns    (Maybe Anns) +##    #module-anns    (Maybe Code)  ##    #module-state   Module-State})  ("lux def" Module   (#Named ["lux" "Module"] @@ -607,8 +607,8 @@            Nat            (#Product ## "lux.module-aliases"             (#Apply (#Product Text Text) List) -           (#Product ## "lux.defs" -            (#Apply (#Product Text Def) List) +           (#Product ## "lux.definitions" +            (#Apply (#Product Text Definition) List)              (#Product ## "lux.imports"               (#Apply Text List)               (#Product ## "lux.tags" @@ -631,7 +631,7 @@   (record$ (#Cons [(tag$ ["lux" "tags"])                    (tuple$ (#Cons (text$ "module-hash")                                   (#Cons (text$ "module-aliases") -                                        (#Cons (text$ "defs") +                                        (#Cons (text$ "definitions")                                                 (#Cons (text$ "imports")                                                        (#Cons (text$ "tags")                                                               (#Cons (text$ "types") @@ -1811,8 +1811,8 @@                   #seed seed #expected  expected #cursor  cursor                   #scope-type-vars scope-type-vars} state]                 ("lux case" (get module modules) -                {(#Some {#module-hash _ #module-aliases _ #defs defs #imports _ #tags tags #types types #module-annotations _ #module-state _}) -                 ("lux case" (get name defs) +                {(#Some {#module-hash _ #module-aliases _ #definitions definitions #imports _ #tags tags #types types #module-annotations _ #module-state _}) +                 ("lux case" (get name definitions)                    {(#Some [def-type def-meta def-value])                     ("lux case" (get-meta ["lux" "alias"] def-meta)                      {(#Some [_ (#Symbol real-name)]) @@ -2419,9 +2419,9 @@               ($' Maybe Macro))           (do Monad<Maybe>             [$module (get module modules) -            gdef (let' [{#module-hash _ #module-aliases _ #defs bindings #imports _ #tags tags #types types #module-annotations _ #module-state _} ("lux check" Module $module)] +            gdef (let' [{#module-hash _ #module-aliases _ #definitions bindings #imports _ #tags tags #types types #module-annotations _ #module-state _} ("lux check" Module $module)]                         (get name bindings))] -           (let' [[def-type def-meta def-value] ("lux check" Def gdef)] +           (let' [[def-type def-meta def-value] ("lux check" Definition gdef)]                   ("lux case" (get-meta ["lux" "macro?"] def-meta)                    {(#Some [_ (#Bool true)])                     ("lux case" (get-meta ["lux" "export?"] def-meta) @@ -3594,7 +3594,7 @@    (-> Ident (Meta [Nat (List Ident) Bool Type]))    (do Monad<Meta>      [=module (find-module module) -     #let [{#module-hash _ #module-aliases _ #defs bindings #imports _ #tags tags-table #types types #module-annotations _ #module-state _} =module]] +     #let [{#module-hash _ #module-aliases _ #definitions bindings #imports _ #tags tags-table #types types #module-annotations _ #module-state _} =module]]      (case (get name tags-table)        (#Some output)        (return output) @@ -3617,7 +3617,7 @@      (#Named [module name] unnamed)      (do Monad<Meta>        [=module (find-module module) -       #let [{#module-hash _ #module-aliases _ #defs bindings #imports _ #tags tags #types types #module-annotations _ #module-state _} =module]] +       #let [{#module-hash _ #module-aliases _ #definitions bindings #imports _ #tags tags #types types #module-annotations _ #module-state _} =module]]        (case (get name types)          (#Some [tags exported? (#Named _ _type)])          (case (resolve-struct-type _type) @@ -3701,22 +3701,22 @@    (let [[exported? tokens'] (export^ tokens)          ?parts (: (Maybe [Code (List Code) Code Code (List Code)])                    (case tokens' -                    (^ (list& [_ (#Form (list& name args))] [meta-rec-cursor (#Record meta-rec-parts)] type defs)) -                    (#Some name args type [meta-rec-cursor (#Record meta-rec-parts)] defs) +                    (^ (list& [_ (#Form (list& name args))] [meta-rec-cursor (#Record meta-rec-parts)] type definitions)) +                    (#Some name args type [meta-rec-cursor (#Record meta-rec-parts)] definitions) -                    (^ (list& name [meta-rec-cursor (#Record meta-rec-parts)] type defs)) -                    (#Some name #Nil type [meta-rec-cursor (#Record meta-rec-parts)] defs) +                    (^ (list& name [meta-rec-cursor (#Record meta-rec-parts)] type definitions)) +                    (#Some name #Nil type [meta-rec-cursor (#Record meta-rec-parts)] definitions) -                    (^ (list& [_ (#Form (list& name args))] type defs)) -                    (#Some name args type (` {}) defs) +                    (^ (list& [_ (#Form (list& name args))] type definitions)) +                    (#Some name args type (` {}) definitions) -                    (^ (list& name type defs)) -                    (#Some name #Nil type (` {}) defs) +                    (^ (list& name type definitions)) +                    (#Some name #Nil type (` {}) definitions)                      _                      #None))]      (case ?parts -      (#Some [name args type meta defs]) +      (#Some [name args type meta definitions])        (case (case name                [_ (#Symbol ["" "_"])]                (case type @@ -3754,7 +3754,7 @@                               (~ (meta-code-merge (` {#.struct? true})                                                   meta))                               (~ type) -                             (struct (~+ defs))))))) +                             (struct (~+ definitions)))))))          #None          (fail "Cannot infer name, so struct must have a name other than \"_\"!")) @@ -4160,7 +4160,7 @@                           imports)]      (wrap (list/join imports')))) -(def: (exported-defs module state) +(def: (exported-definitions module state)    (-> Text (Meta (List Text)))    (let [modules (case state                    {#info info #source    source  #current-module _ #modules modules @@ -4170,7 +4170,7 @@                    modules)]      (case (get module modules)        (#Some =module) -      (let [to-alias (list/map (: (-> [Text Def] +      (let [to-alias (list/map (: (-> [Text Definition]                                        (List Text))                                    (function [[name [def-type def-meta def-value]]]                                      (case (get-meta ["lux" "export?"] def-meta) @@ -4179,8 +4179,8 @@                                        _                                        (list)))) -                               (let [{#module-hash _ #module-aliases _ #defs defs #imports _ #tags tags #types types #module-annotations _ #module-state _} =module] -                                 defs))] +                               (let [{#module-hash _ #module-aliases _ #definitions definitions #imports _ #tags tags #types types #module-annotations _ #module-state _} =module] +                                 definitions))]          (#Right state (list/join to-alias)))        #None @@ -4248,8 +4248,8 @@        #None        #None -      (#Some {#defs defs #module-hash _ #module-aliases _ #imports _ #tags tags #types types #module-annotations _ #module-state _}) -      (case (get v-name defs) +      (#Some {#definitions definitions #module-hash _ #module-aliases _ #imports _ #tags tags #types types #module-annotations _ #module-state _}) +      (case (get v-name definitions)          #None          #None @@ -4267,8 +4267,8 @@        #None        (#Left (text/compose "Unknown definition: " (ident/encode name))) -      (#Some {#defs defs #module-hash _ #module-aliases _ #imports _ #tags tags #types types #module-annotations _ #module-state _}) -      (case (get v-name defs) +      (#Some {#definitions definitions #module-hash _ #module-aliases _ #imports _ #tags tags #types types #module-annotations _ #module-state _}) +      (case (get v-name definitions)          #None          (#Left (text/compose "Unknown definition: " (ident/encode name))) @@ -4612,7 +4612,7 @@    (-> Text Text (Meta Bool))    (do Monad<Meta>      [module (find-module module-name) -     #let [{#module-hash _ #module-aliases _ #defs _ #imports imports #tags _ #types _ #module-annotations _ #module-state _} module]] +     #let [{#module-hash _ #module-aliases _ #definitions _ #imports imports #tags _ #types _ #module-annotations _ #module-state _} module]]      (wrap (is-member? imports import-name))))  (def: (read-refer module-name options) @@ -4659,17 +4659,17 @@                                            referred-defs)))]       defs' (case r-defs               #All -             (exported-defs module-name) +             (exported-definitions module-name)               (#Only +defs)               (do Monad<Meta> -               [*defs (exported-defs module-name) +               [*defs (exported-definitions module-name)                  _ (test-referrals module-name *defs +defs)]                 (wrap +defs))               (#Exclude -defs)               (do Monad<Meta> -               [*defs (exported-defs module-name) +               [*defs (exported-definitions module-name)                  _ (test-referrals module-name *defs -defs)]                 (wrap (filter (|>> (is-member? -defs) not) *defs))) @@ -5501,7 +5501,7 @@      ))  (macro: #export (^~ tokens) -  {#.doc (doc "Use global defs with simple values, such as text, int, frac and bool in place of literals in patterns." +  {#.doc (doc "Use global definitions with simple values, such as text, int, frac and bool in place of literals in patterns."                "The definitions must be properly-qualified (though you may use one of the short-cuts Lux provides)."                (def: (empty?' node)                  (All [K V] (-> (Node K V) Bool)) diff --git a/stdlib/source/lux/macro.lux b/stdlib/source/lux/macro.lux index aa2429ae7..b32fc0aa1 100644 --- a/stdlib/source/lux/macro.lux +++ b/stdlib/source/lux/macro.lux @@ -247,7 +247,7 @@        (Maybe Macro))    (do maybe.Monad<Maybe>      [$module (get module modules) -     [def-type def-anns def-value] (: (Maybe Def) (|> (: Module $module) (get@ #.defs) (get name)))] +     [def-type def-anns def-value] (: (Maybe Definition) (|> (: Module $module) (get@ #.definitions) (get name)))]      (if (and (macro? def-anns)               (or (export? def-anns) (text/= module this-module)))        (#.Some (:! Macro def-value)) @@ -454,15 +454,15 @@  (def: #export (find-def name)    {#.doc "Looks-up a definition's whole data in the available modules (including the current one)."} -  (-> Ident (Meta Def)) +  (-> Ident (Meta Definition))    (do Monad<Meta>      [name (normalize name)]      (function [compiler] -      (case (: (Maybe Def) +      (case (: (Maybe Definition)                 (do maybe.Monad<Maybe>                   [#let [[v-prefix v-name] name] -                  (^slots [#.defs]) (get v-prefix (get@ #.modules compiler))] -                 (get v-name defs))) +                  (^slots [#.definitions]) (get v-prefix (get@ #.modules compiler))] +                 (get v-name definitions)))          (#.Some definition)          (#e.Success [compiler definition]) @@ -508,23 +508,23 @@      [[def-type def-data def-value] (find-def name)]      (wrap (:! Type def-value)))) -(def: #export (defs module-name) +(def: #export (definitions module-name)    {#.doc "The entire list of definitions in a module (including the unexported/private ones)."} -  (-> Text (Meta (List [Text Def]))) +  (-> Text (Meta (List [Text Definition])))    (function [compiler]      (case (get module-name (get@ #.modules compiler))        #.None          (#e.Error ($_ text/compose "Unknown module: " module-name)) -      (#.Some module) (#e.Success [compiler (get@ #.defs module)]) +      (#.Some module) (#e.Success [compiler (get@ #.definitions module)])        )))  (def: #export (exports module-name)    {#.doc "All the exported definitions in a module."} -  (-> Text (Meta (List [Text Def]))) +  (-> Text (Meta (List [Text Definition])))    (do Monad<Meta> -    [defs (defs module-name)] +    [definitions (definitions module-name)]      (wrap (list.filter (function [[name [def-type def-anns def-value]]]                           (export? def-anns)) -                       defs)))) +                       definitions))))  (def: #export modules    {#.doc "All the available modules (including the current one)."} diff --git a/stdlib/source/lux/macro/syntax/common.lux b/stdlib/source/lux/macro/syntax/common.lux index 9de36fe5d..fa3d975db 100644 --- a/stdlib/source/lux/macro/syntax/common.lux +++ b/stdlib/source/lux/macro/syntax/common.lux @@ -1,7 +1,7 @@  (.module: {#.doc "Commons syntax readers and writers.                    The goal is to be able to reuse common syntax in macro definitions across libraries."} -  lux) +  [lux #- Definition])  (type: #export Declaration    {#declaration-name Text diff --git a/stdlib/source/lux/macro/syntax/common/reader.lux b/stdlib/source/lux/macro/syntax/common/reader.lux index 0e8b5df9a..bb2e128e6 100644 --- a/stdlib/source/lux/macro/syntax/common/reader.lux +++ b/stdlib/source/lux/macro/syntax/common/reader.lux @@ -8,7 +8,7 @@               [maybe])         [macro]         (macro ["s" syntax #+ syntax: Syntax])) -  [// #*]) +  [//])  ## Exports  (def: #export export @@ -22,7 +22,7 @@                "Such as:"                quux                (foo bar baz))} -  (Syntax Declaration) +  (Syntax //.Declaration)    (p.either (p.seq s.local-symbol                     (p/wrap (list)))              (s.form (p.seq s.local-symbol @@ -31,7 +31,7 @@  ## Annotations  (def: #export annotations    {#.doc "Reader for the common annotations syntax used by def: statements."} -  (Syntax Annotations) +  (Syntax //.Annotations)    (s.record (p.some (p.seq s.tag s.any))))  ## Definitions @@ -50,7 +50,7 @@    (s.tuple (p.seq s.text s.text)))  (def: (_definition-anns^ _) -  (-> Top (Syntax Annotations)) +  (-> Top (Syntax //.Annotations))    (p.alt (s.this (' #.Nil))           (s.form (do p.Monad<Parser>                     [_ (s.this (' #.Cons)) @@ -101,7 +101,7 @@  (def: #export (definition compiler)    {#.doc "A reader that first macro-expands and then analyses the input Code, to ensure it's a definition."} -  (-> Compiler (Syntax Definition)) +  (-> Compiler (Syntax //.Definition))    (do p.Monad<Parser>      [definition-raw s.any       me-definition-raw (s.on compiler @@ -123,7 +123,7 @@  (def: #export (typed-definition compiler)    {#.doc "A reader for definitions that ensures the input syntax is typed."} -  (-> Compiler (Syntax Definition)) +  (-> Compiler (Syntax //.Definition))    (do p.Monad<Parser>      [_definition (definition compiler)       _ (case (get@ #//.definition-type _definition) diff --git a/stdlib/source/lux/macro/syntax/common/writer.lux b/stdlib/source/lux/macro/syntax/common/writer.lux index 5b5ab9ab5..34f911842 100644 --- a/stdlib/source/lux/macro/syntax/common/writer.lux +++ b/stdlib/source/lux/macro/syntax/common/writer.lux @@ -3,7 +3,7 @@    (lux (data (coll [list "list/" Functor<List>])               [product])         (macro [code])) -  [// #*]) +  [//])  ## Exports  (def: #export (export exported?) @@ -14,5 +14,5 @@  ## Annotations  (def: #export (annotations anns) -  (-> Annotations Code) +  (-> //.Annotations Code)    (|> anns (list/map (product.both code.tag id)) code.record)) diff --git a/stdlib/source/lux/type/abstract.lux b/stdlib/source/lux/type/abstract.lux index cf6f1b4e4..9a991a2a9 100644 --- a/stdlib/source/lux/type/abstract.lux +++ b/stdlib/source/lux/type/abstract.lux @@ -66,32 +66,32 @@             abstract-declaration (` ((~ (code.local-symbol name)) (~+ type-varsC)))             representation-declaration (` ((~ (code.local-symbol (representation-name name))) (~+ type-varsC)))             this-module (|> this-module -                           (update@ #.defs (put down-cast (: Def -                                                             [Macro macro-anns -                                                              (: Macro -                                                                 (function [tokens] -                                                                   (case tokens -                                                                     (^ (list value)) -                                                                     (wrap (list (` ((: (All [(~+ type-varsC)] -                                                                                          (-> (~ representation-declaration) (~ abstract-declaration))) -                                                                                        (|>> :!!)) -                                                                                     (~ value))))) - -                                                                     _ -                                                                     (macro.fail ($_ text/compose "Wrong syntax for " down-cast)))))]))) -                           (update@ #.defs (put up-cast (: Def -                                                           [Macro macro-anns -                                                            (: Macro -                                                               (function [tokens] -                                                                 (case tokens -                                                                   (^ (list value)) -                                                                   (wrap (list (` ((: (All [(~+ type-varsC)] -                                                                                        (-> (~ abstract-declaration) (~ representation-declaration))) -                                                                                      (|>> :!!)) -                                                                                   (~ value))))) - -                                                                   _ -                                                                   (macro.fail ($_ text/compose "Wrong syntax for " up-cast)))))]))))]] +                           (update@ #.definitions (put down-cast (: Definition +                                                                    [Macro macro-anns +                                                                     (: Macro +                                                                        (function [tokens] +                                                                          (case tokens +                                                                            (^ (list value)) +                                                                            (wrap (list (` ((: (All [(~+ type-varsC)] +                                                                                                 (-> (~ representation-declaration) (~ abstract-declaration))) +                                                                                               (|>> :!!)) +                                                                                            (~ value))))) + +                                                                            _ +                                                                            (macro.fail ($_ text/compose "Wrong syntax for " down-cast)))))]))) +                           (update@ #.definitions (put up-cast (: Definition +                                                                  [Macro macro-anns +                                                                   (: Macro +                                                                      (function [tokens] +                                                                        (case tokens +                                                                          (^ (list value)) +                                                                          (wrap (list (` ((: (All [(~+ type-varsC)] +                                                                                               (-> (~ abstract-declaration) (~ representation-declaration))) +                                                                                             (|>> :!!)) +                                                                                          (~ value))))) + +                                                                          _ +                                                                          (macro.fail ($_ text/compose "Wrong syntax for " up-cast)))))]))))]]      (function [compiler]        (#E.Success [(update@ #.modules (put this-module-name this-module) compiler)                     []])))) @@ -101,8 +101,8 @@    (do macro.Monad<Meta>      [this-module (macro.find-module this-module-name)       #let [this-module (|> this-module -                           (update@ #.defs (remove down-cast)) -                           (update@ #.defs (remove up-cast)))]] +                           (update@ #.definitions (remove down-cast)) +                           (update@ #.definitions (remove up-cast)))]]      (function [compiler]        (#E.Success [(update@ #.modules (put this-module-name this-module) compiler)                     []])))) diff --git a/stdlib/source/lux/type/implicit.lux b/stdlib/source/lux/type/implicit.lux index 7fe8d02d9..a28db6058 100644 --- a/stdlib/source/lux/type/implicit.lux +++ b/stdlib/source/lux/type/implicit.lux @@ -15,7 +15,7 @@         (macro [code]                ["s" syntax #+ syntax: Syntax])         (lang [type] -             (type ["tc" check #+ Check Monad<Check>])) +             (type ["tc" check #+ Check]))         ))  (def: (find-type-var id env) @@ -65,12 +65,12 @@      (#.Product left right)      (if (n/= +0 idx) -      (:: Monad<Check> wrap left) +      (:: tc.Monad<Check> wrap left)        (find-member-type (n/dec idx) right))      _      (if (n/= +0 idx) -      (:: Monad<Check> wrap sig-type) +      (:: tc.Monad<Check> wrap sig-type)        (tc.fail (format "Cannot find member type " (%n idx) " for " (%type sig-type))))))  (def: (find-member-name member) @@ -108,9 +108,9 @@       [idx tag-list sig-type] (macro.resolve-tag member)]      (wrap [idx sig-type]))) -(def: (prepare-defs this-module-name defs) -  (-> Text (List [Text Def]) (List [Ident Type])) -  (|> defs +(def: (prepare-definitions this-module-name definitions) +  (-> Text (List [Text Definition]) (List [Ident Type])) +  (|> definitions        (list.filter (function [[name [def-type def-anns def-value]]]                       (macro.struct? def-anns)))        (list/map (function [[name [def-type def-anns def-value]]] @@ -133,8 +133,8 @@    (Meta (List [Ident Type]))    (do Monad<Meta>      [this-module-name macro.current-module-name -     defs (macro.defs this-module-name)] -    (wrap (prepare-defs this-module-name defs)))) +     definitions (macro.definitions this-module-name)] +    (wrap (prepare-definitions this-module-name definitions))))  (def: import-structs    (Meta (List [Ident Type])) @@ -144,7 +144,7 @@       export-batches (monad.map @ (function [imp-mod]                                     (do @                                       [exports (macro.exports imp-mod)] -                                     (wrap (prepare-defs imp-mod exports)))) +                                     (wrap (prepare-definitions imp-mod exports))))                                 imp-mods)]      (wrap (list/join export-batches)))) @@ -155,13 +155,13 @@      (apply-function-type func' arg)      (#.UnivQ _) -    (do Monad<Check> +    (do tc.Monad<Check>        [[id var] tc.var]        (apply-function-type (maybe.assume (type.apply (list var) func))                             arg))      (#.Function input output) -    (do Monad<Check> +    (do tc.Monad<Check>        [_ (tc.check input arg)]        (wrap output)) @@ -172,19 +172,19 @@    (-> Type (Check [(List Nat) Type]))    (case type      (#.UnivQ _) -    (do Monad<Check> +    (do tc.Monad<Check>        [[id var] tc.var         [ids final-output] (concrete-type (maybe.assume (type.apply (list var) type)))]        (wrap [(#.Cons id ids)               final-output]))      _ -    (:: Monad<Check> wrap [(list) type]))) +    (:: tc.Monad<Check> wrap [(list) type])))  (def: (check-apply member-type input-types output-type)    (-> Type (List Type) Type (Check [])) -  (do Monad<Check> -    [member-type' (monad.fold Monad<Check> +  (do tc.Monad<Check> +    [member-type' (monad.fold tc.Monad<Check>                                (function [input member]                                  (apply-function-type member input))                                member-type @@ -204,7 +204,7 @@      (case (|> alts                (list/map (function [[alt-name alt-type]]                            (case (tc.run context -                                        (do Monad<Check> +                                        (do tc.Monad<Check>                                            [[tvars alt-type] (concrete-type alt-type)                                             #let [[deps alt-type] (type.flatten-function alt-type)]                                             _ (tc.check dep alt-type) @@ -239,7 +239,7 @@        (tc.fail (format "No candidates for provisioning: " (%type dep)))        (#.Cons winner #.Nil) -      (:: Monad<Check> wrap winner) +      (:: tc.Monad<Check> wrap winner)        _        (tc.fail (format "Too many candidates for provisioning: " (%type dep) " --- " (%list (|>> product.left %ident) candidates)))) @@ -253,7 +253,7 @@      (case (|> alts                (list/map (function [[alt-name alt-type]]                            (case (tc.run context -                                        (do Monad<Check> +                                        (do tc.Monad<Check>                                            [[tvars alt-type] (concrete-type alt-type)                                             #let [[deps alt-type] (type.flatten-function alt-type)]                                             _ (tc.check alt-type sig-type) | 
