diff options
| author | Joel Martin <github@martintribe.org> | 2014-04-23 21:59:50 -0500 |
|---|---|---|
| committer | Joel Martin <github@martintribe.org> | 2014-04-23 21:59:50 -0500 |
| commit | 6301e0b6374cecc5599665be14d6ddc6a31ce1e8 (patch) | |
| tree | dbf1dc2ff6c682fd87c72a7907e7f6e59c8d4c03 /java/src | |
| parent | 89bd4de1e2704c1bc562788b2c5e4fc08b71a538 (diff) | |
| download | mal-6301e0b6374cecc5599665be14d6ddc6a31ce1e8.tar.gz mal-6301e0b6374cecc5599665be14d6ddc6a31ce1e8.zip | |
All: TCO let* and quasiquote.
Diffstat (limited to 'java/src')
| -rw-r--r-- | java/src/main/java/mal/step5_tco.java | 4 | ||||
| -rw-r--r-- | java/src/main/java/mal/step6_file.java | 4 | ||||
| -rw-r--r-- | java/src/main/java/mal/step7_quote.java | 7 | ||||
| -rw-r--r-- | java/src/main/java/mal/step8_macros.java | 7 | ||||
| -rw-r--r-- | java/src/main/java/mal/stepA_more.java | 7 |
5 files changed, 21 insertions, 8 deletions
diff --git a/java/src/main/java/mal/step5_tco.java b/java/src/main/java/mal/step5_tco.java index dd1dc89..aa3f7a7 100644 --- a/java/src/main/java/mal/step5_tco.java +++ b/java/src/main/java/mal/step5_tco.java @@ -80,7 +80,9 @@ public class step5_tco { val = ((MalList)a1).nth(i+1); let_env.set(key.getName(), EVAL(val, let_env)); } - return EVAL(a2, let_env); + orig_ast = a2; + env = let_env; + break; case "do": eval_ast(ast.slice(1, ast.size()-1), env); orig_ast = ast.nth(ast.size()-1); diff --git a/java/src/main/java/mal/step6_file.java b/java/src/main/java/mal/step6_file.java index 4bf0f0e..d3f4914 100644 --- a/java/src/main/java/mal/step6_file.java +++ b/java/src/main/java/mal/step6_file.java @@ -80,7 +80,9 @@ public class step6_file { val = ((MalList)a1).nth(i+1); let_env.set(key.getName(), EVAL(val, let_env)); } - return EVAL(a2, let_env); + orig_ast = a2; + env = let_env; + break; case "do": eval_ast(ast.slice(1, ast.size()-1), env); orig_ast = ast.nth(ast.size()-1); diff --git a/java/src/main/java/mal/step7_quote.java b/java/src/main/java/mal/step7_quote.java index da0781b..639f8b9 100644 --- a/java/src/main/java/mal/step7_quote.java +++ b/java/src/main/java/mal/step7_quote.java @@ -107,11 +107,14 @@ public class step7_quote { val = ((MalList)a1).nth(i+1); let_env.set(key.getName(), EVAL(val, let_env)); } - return EVAL(a2, let_env); + orig_ast = a2; + env = let_env; + break; case "quote": return ast.nth(1); case "quasiquote": - return EVAL(quasiquote(ast.nth(1)), env); + orig_ast = quasiquote(ast.nth(1)); + break; case "do": eval_ast(ast.slice(1, ast.size()-1), env); orig_ast = ast.nth(ast.size()-1); diff --git a/java/src/main/java/mal/step8_macros.java b/java/src/main/java/mal/step8_macros.java index c4cb1de..fb3ffdc 100644 --- a/java/src/main/java/mal/step8_macros.java +++ b/java/src/main/java/mal/step8_macros.java @@ -135,11 +135,14 @@ public class step8_macros { val = ((MalList)a1).nth(i+1); let_env.set(key.getName(), EVAL(val, let_env)); } - return EVAL(a2, let_env); + orig_ast = a2; + env = let_env; + break; case "quote": return ast.nth(1); case "quasiquote": - return EVAL(quasiquote(ast.nth(1)), env); + orig_ast = quasiquote(ast.nth(1)); + break; case "defmacro!": a1 = ast.nth(1); a2 = ast.nth(2); diff --git a/java/src/main/java/mal/stepA_more.java b/java/src/main/java/mal/stepA_more.java index 20dee3f..75ec301 100644 --- a/java/src/main/java/mal/stepA_more.java +++ b/java/src/main/java/mal/stepA_more.java @@ -137,11 +137,14 @@ public class stepA_more { val = ((MalList)a1).nth(i+1); let_env.set(key.getName(), EVAL(val, let_env)); } - return EVAL(a2, let_env); + orig_ast = a2; + env = let_env; + break; case "quote": return ast.nth(1); case "quasiquote": - return EVAL(quasiquote(ast.nth(1)), env); + orig_ast = quasiquote(ast.nth(1)); + break; case "defmacro!": a1 = ast.nth(1); a2 = ast.nth(2); |
