diff options
Diffstat (limited to 'new-luxc/source/luxc/module.lux')
| -rw-r--r-- | new-luxc/source/luxc/module.lux | 60 | 
1 files changed, 30 insertions, 30 deletions
diff --git a/new-luxc/source/luxc/module.lux b/new-luxc/source/luxc/module.lux index 240b60f97..39d3679e6 100644 --- a/new-luxc/source/luxc/module.lux +++ b/new-luxc/source/luxc/module.lux @@ -3,9 +3,9 @@    (lux (control [monad #+ do])         (data [text "T/" Eq<Text>]               text/format -             ["R" result] +             ["e" error]               (coll [list "L/" Fold<List> Functor<List>])) -       [macro #+ Monad<Lux>]) +       [meta #+ Monad<Meta>])    (luxc ["&" base]          ["&;" scope])) @@ -22,13 +22,13 @@  (def: #export (define (^@ full-name [module-name def-name])                        definition) -  (-> Ident Def (Lux Unit)) +  (-> Ident Def (Meta Unit))    (function [compiler]      (case (&;pl-get module-name (get@ #;modules compiler))        (#;Some module)        (case (&;pl-get def-name (get@ #;defs module))          #;None -        (#R;Success [(update@ #;modules +        (#e;Success [(update@ #;modules                                (&;pl-put module-name                                          (update@ #;defs                                                   (: (-> (List [Text Def]) (List [Text Def])) @@ -38,31 +38,31 @@                       []])          (#;Some already-existing) -        (#R;Error (format "Cannot re-define definiton: " (%ident full-name)))) +        (#e;Error (format "Cannot re-define definiton: " (%ident full-name))))        #;None -      (#R;Error (format "Cannot define in unknown module: " module-name))))) +      (#e;Error (format "Cannot define in unknown module: " module-name)))))  (def: #export (create hash name) -  (-> Nat Text (Lux Module)) +  (-> Nat Text (Meta Module))    (function [compiler]      (let [module (new-module hash)] -      (#R;Success [(update@ #;modules +      (#e;Success [(update@ #;modules                              (&;pl-put name module)                              compiler)                     module]))))  (def: #export (with-module hash name action) -  (All [a] (-> Nat Text (Lux a) (Lux [Module a]))) -  (do Monad<Lux> +  (All [a] (-> Nat Text (Meta a) (Meta [Module a]))) +  (do Monad<Meta>      [_ (create hash name)       output (&scope;with-scope name action) -     module (macro;find-module name)] +     module (meta;find-module name)]      (wrap [module output])))  (do-template [<flagger> <asker> <tag>]    [(def: #export (<flagger> module-name) -     (-> Text (Lux Unit)) +     (-> Text (Meta Unit))       (function [compiler]         (case (|> compiler (get@ #;modules) (&;pl-get module-name))           (#;Some module) @@ -70,26 +70,26 @@                           #;Active true                           _     false)]             (if active? -             (#R;Success [(update@ #;modules +             (#e;Success [(update@ #;modules                                     (&;pl-put module-name (set@ #;module-state <tag> module))                                     compiler)                            []]) -             (#R;Error "Can only change the state of a currently-active module."))) +             (#e;Error "Can only change the state of a currently-active module.")))           #;None -         (#R;Error (format "Module does not exist: " module-name))))) +         (#e;Error (format "Module does not exist: " module-name)))))     (def: #export (<asker> module-name) -     (-> Text (Lux Bool)) +     (-> Text (Meta Bool))       (function [compiler]         (case (|> compiler (get@ #;modules) (&;pl-get module-name))           (#;Some module) -         (#R;Success [compiler +         (#e;Success [compiler                        (case (get@ #;module-state module)                          <tag> true                          _     false)])           #;None -         (#R;Error (format "Module does not exist: " module-name))) +         (#e;Error (format "Module does not exist: " module-name)))         ))]    [flag-active!   active?   #;Active] @@ -99,14 +99,14 @@  (do-template [<name> <tag> <type>]    [(def: (<name> module-name) -     (-> Text (Lux <type>)) +     (-> Text (Meta <type>))       (function [compiler]         (case (|> compiler (get@ #;modules) (&;pl-get module-name))           (#;Some module) -         (#R;Success [compiler (get@ <tag> module)]) +         (#e;Success [compiler (get@ <tag> module)])           #;None -         (macro;run compiler (&;fail (format "Unknown module: " module-name)))) +         (meta;run compiler (&;fail (format "Unknown module: " module-name))))         ))]    [tags-by-module  #;tags        (List [Text [Nat (List Ident) Bool Type]])] @@ -115,8 +115,8 @@    )  (def: (ensure-undeclared-tags module-name tags) -  (-> Text (List Text) (Lux Unit)) -  (do Monad<Lux> +  (-> Text (List Text) (Meta Unit)) +  (do Monad<Meta>      [bindings (tags-by-module module-name)       _ (monad;map @                    (function [tag] @@ -130,9 +130,9 @@      (wrap [])))  (def: #export (declare-tags tags exported? type) -  (-> (List Text) Bool Type (Lux Unit)) -  (do Monad<Lux> -    [current-module macro;current-module-name +  (-> (List Text) Bool Type (Meta Unit)) +  (do Monad<Meta> +    [current-module meta;current-module-name       [type-module type-name] (case type                                 (#;Named type-ident _)                                 (wrap type-ident) @@ -140,13 +140,13 @@                                 _                                 (&;fail (format "Cannot define tags for an unnamed type: " (%type type))))       _ (ensure-undeclared-tags current-module tags) -     _ (macro;assert (format "Cannot define tags for a type belonging to a foreign module: " (%type type)) -                     (T/= current-module type-module))] +     _ (meta;assert (format "Cannot define tags for a type belonging to a foreign module: " (%type type)) +                    (T/= current-module type-module))]      (function [compiler]        (case (|> compiler (get@ #;modules) (&;pl-get current-module))          (#;Some module)          (let [namespaced-tags (L/map (|>. [current-module]) tags)] -          (#R;Success [(update@ #;modules +          (#e;Success [(update@ #;modules                                  (&;pl-update current-module                                               (|>. (update@ #;tags (function [tag-bindings]                                                                      (L/fold (function [[idx tag] table] @@ -157,4 +157,4 @@                                  compiler)                         []]))          #;None -        (macro;run compiler (&;fail (format "Unknown module: " current-module))))))) +        (meta;run compiler (&;fail (format "Unknown module: " current-module)))))))  | 
