aboutsummaryrefslogtreecommitdiff
path: root/src/lang/parser.clj
diff options
context:
space:
mode:
Diffstat (limited to 'src/lang/parser.clj')
-rw-r--r--src/lang/parser.clj13
1 files changed, 4 insertions, 9 deletions
diff --git a/src/lang/parser.clj b/src/lang/parser.clj
index 2d104be94..fd50a04fb 100644
--- a/src/lang/parser.clj
+++ b/src/lang/parser.clj
@@ -93,15 +93,10 @@
(return [::case =variant =branches])))
(defparser ^:private parse-let
- [::&lexer/list ([[::&lexer/ident "let"] [::&lexer/tuple ?bindings] ?expr] :seq)]
- (exec [=expr (apply-m parse-form (list ?expr))
- =bindings (do (assert (even? (count ?bindings)))
- (map-m (fn [[destruct expr]]
- (exec [=destruct (apply-m parse-form (list destruct))
- =expr (apply-m parse-form (list expr))]
- (return [::let-binding =destruct =expr])))
- (partition 2 ?bindings)))]
- (return [::let =bindings =expr])))
+ [::&lexer/list ([[::&lexer/ident "let"] [::&lexer/ident ?label] ?value ?body] :seq)]
+ (exec [=value (apply-m parse-form (list ?value))
+ =body (apply-m parse-form (list ?body))]
+ (return [::let ?label =value =body])))
(defparser ^:private parse-module
[::&lexer/list ([[::&lexer/ident "module"]] :seq)]