aboutsummaryrefslogtreecommitdiff
path: root/new-luxc/source/luxc/analyser.lux
diff options
context:
space:
mode:
Diffstat (limited to 'new-luxc/source/luxc/analyser.lux')
-rw-r--r--new-luxc/source/luxc/analyser.lux24
1 files changed, 14 insertions, 10 deletions
diff --git a/new-luxc/source/luxc/analyser.lux b/new-luxc/source/luxc/analyser.lux
index 2be2b6da6..44fa96081 100644
--- a/new-luxc/source/luxc/analyser.lux
+++ b/new-luxc/source/luxc/analyser.lux
@@ -18,9 +18,9 @@
["&&;" primitive]
["&&;" reference]
["&&;" type]
- ["&&;" struct]
+ ["&&;" structure]
["&&;" case]
- ["&&;" proc]))
+ ["&&;" procedure]))
(def: (to-branches raw)
(-> (List Code) (Lux (List [Code Code])))
@@ -61,14 +61,20 @@
(analyse singleton)
(^ (#;Tuple elems))
- (&&struct;analyse-product analyse elems)
+ (&&structure;analyse-product analyse elems)
(^ (#;Record pairs))
- (&&struct;analyse-record analyse pairs)
+ (&&structure;analyse-record analyse pairs)
(#;Symbol reference)
(&&reference;analyse-reference reference)
+ (^ (#;Form (list [_ (#;Symbol ["" "_lux_function"])]
+ [_ (#;Symbol ["" func-name])]
+ [_ (#;Symbol ["" arg-name])]
+ body)))
+ (&&function;analyse-function analyse func-name arg-name body)
+
(^ (#;Form (list [_ (#;Symbol ["" "_lux_check"])]
type
value)))
@@ -79,10 +85,8 @@
value)))
(&&type;analyse-coerce analyse eval type value)
- (^ (#;Form (list [_ (#;Symbol ["" "_lux_proc"])]
- [_ (#;Symbol proc)]
- [_ (#;Tuple args)])))
- (&&proc;analyse-proc analyse proc args)
+ (^ (#;Form (list& [_ (#;Text proc-name)] proc-args)))
+ (&&procedure;analyse-procedure analyse proc-name proc-args)
(^ (#;Form (list& [_ (#;Symbol ["" "_lux_case"])]
input
@@ -93,11 +97,11 @@
(^ (#;Form (list [_ (#;Nat tag)]
value)))
- (&&struct;analyse-sum analyse tag value)
+ (&&structure;analyse-sum analyse tag value)
(^ (#;Form (list [_ (#;Tag tag)]
value)))
- (&&struct;analyse-tagged-sum analyse tag value)
+ (&&structure;analyse-tagged-sum analyse tag value)
(^ (#;Form (list& func args)))
(do Monad<Lux>