diff options
author | Eduardo Julian | 2014-12-15 20:07:05 -0400 |
---|---|---|
committer | Eduardo Julian | 2014-12-15 20:07:05 -0400 |
commit | a37f958774bd0f7b1800a68a44492e4f95d26e8c (patch) | |
tree | fcfcb3cd01d012ad46f5af80e667235736cf75d7 /src/lang/parser.clj | |
parent | 5883c0d11c21a74ba493ea369ff01d7baed80a41 (diff) |
Added lambdas! (not yet real closures, but coming soon...)
Diffstat (limited to '')
-rw-r--r-- | src/lang/parser.clj | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/lang/parser.clj b/src/lang/parser.clj index 3149cf5d4..2f9a26c66 100644 --- a/src/lang/parser.clj +++ b/src/lang/parser.clj @@ -56,6 +56,11 @@ (partition 2 ?parts)))] (return [::record =kvs]))) +(defparser ^:private parse-lambda + [::&lexer/list ([[::&lexer/ident "lambda"] [::&lexer/tuple ?args] ?body] :seq)] + (exec [=body (apply-m parse-form (list ?body))] + (return [::lambda (mapv ident->string ?args) =body]))) + (defparser ^:private parse-def [::&lexer/list ([[::&lexer/ident "def"] ?name ?body] :seq)] (exec [=name (apply-m parse-form (list ?name)) @@ -192,6 +197,7 @@ parse-ident parse-tuple parse-record + parse-lambda parse-def parse-defdata parse-if |