diff options
Diffstat (limited to '')
-rw-r--r-- | new-luxc/source/luxc/analyser.lux | 24 |
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> |