From 36e287b51fa51896247a2e11f88d9cc1fa7afcc6 Mon Sep 17 00:00:00 2001 From: Joel Martin Date: Tue, 26 Jan 2016 14:13:59 -0600 Subject: [PATCH] cs, fsharp, java, vb: fix macro result evaluation. Related to issue #142. - also, fix java build issue in both Makefiles. --- Makefile | 2 +- cs/step8_macros.cs | 4 +++- cs/step9_try.cs | 4 +++- cs/stepA_mal.cs | 4 +++- fsharp/step8_macros.fs | 2 +- fsharp/step9_try.fs | 2 +- fsharp/stepA_mal.fs | 2 +- java/Makefile | 3 +++ java/src/main/java/mal/step8_macros.java | 4 +++- java/src/main/java/mal/step9_try.java | 4 +++- java/src/main/java/mal/stepA_mal.java | 4 +++- vb/step8_macros.vb | 2 +- vb/step9_try.vb | 2 +- vb/stepA_mal.vb | 2 +- 14 files changed, 28 insertions(+), 13 deletions(-) diff --git a/Makefile b/Makefile index 8718c7ae..4433e582 100644 --- a/Makefile +++ b/Makefile @@ -110,7 +110,7 @@ forth_STEP_TO_PROG = forth/$($(1)).fs fsharp_STEP_TO_PROG = fsharp/$($(1)).exe go_STEP_TO_PROG = go/$($(1)) groovy_STEP_TO_PROG = groovy/$($(1)).groovy -java_STEP_TO_PROG = java/src/main/java/mal/$($(1)).java +java_STEP_TO_PROG = java/target/classes/mal/$($(1)).class haskell_STEP_TO_PROG = haskell/$($(1)) julia_STEP_TO_PROG = julia/$($(1)).jl js_STEP_TO_PROG = js/$($(1)).js diff --git a/cs/step8_macros.cs b/cs/step8_macros.cs index bfd9f744..3ec240a3 100644 --- a/cs/step8_macros.cs +++ b/cs/step8_macros.cs @@ -108,7 +108,9 @@ namespace Mal { // apply list MalVal expanded = macroexpand(orig_ast, env); - if (!expanded.list_Q()) { return expanded; } + if (!expanded.list_Q()) { + return eval_ast(expanded, env); + } MalList ast = (MalList) expanded; if (ast.size() == 0) { return ast; } diff --git a/cs/step9_try.cs b/cs/step9_try.cs index 0893724f..ea72427c 100644 --- a/cs/step9_try.cs +++ b/cs/step9_try.cs @@ -108,7 +108,9 @@ namespace Mal { // apply list MalVal expanded = macroexpand(orig_ast, env); - if (!expanded.list_Q()) { return expanded; } + if (!expanded.list_Q()) { + return eval_ast(expanded, env); + } MalList ast = (MalList) expanded; if (ast.size() == 0) { return ast; } diff --git a/cs/stepA_mal.cs b/cs/stepA_mal.cs index 35728171..aea98e1f 100644 --- a/cs/stepA_mal.cs +++ b/cs/stepA_mal.cs @@ -108,7 +108,9 @@ namespace Mal { // apply list MalVal expanded = macroexpand(orig_ast, env); - if (!expanded.list_Q()) { return expanded; } + if (!expanded.list_Q()) { + return eval_ast(expanded, env); + } MalList ast = (MalList) expanded; if (ast.size() == 0) { return ast; } diff --git a/fsharp/step8_macros.fs b/fsharp/step8_macros.fs index d02774cd..43845358 100644 --- a/fsharp/step8_macros.fs +++ b/fsharp/step8_macros.fs @@ -137,7 +137,7 @@ module REPL let inner = Env.makeNew outer binds rest body |> eval inner | _ -> raise <| Error.errExpectedX "func" - | node -> node + | node -> node |> eval_ast env | node -> node |> eval_ast env let READ input = diff --git a/fsharp/step9_try.fs b/fsharp/step9_try.fs index 3d048d02..36984ad9 100644 --- a/fsharp/step9_try.fs +++ b/fsharp/step9_try.fs @@ -154,7 +154,7 @@ module REPL let inner = Env.makeNew outer binds rest body |> eval inner | _ -> raise <| Error.errExpectedX "func" - | node -> node + | node -> node |> eval_ast env | node -> node |> eval_ast env let READ input = diff --git a/fsharp/stepA_mal.fs b/fsharp/stepA_mal.fs index 29c984b2..6bcae091 100644 --- a/fsharp/stepA_mal.fs +++ b/fsharp/stepA_mal.fs @@ -155,7 +155,7 @@ module REPL let inner = Env.makeNew outer binds rest body |> eval inner | _ -> raise <| Error.errExpectedX "func" - | node -> node + | node -> node |> eval_ast env | node -> node |> eval_ast env let READ input = diff --git a/java/Makefile b/java/Makefile index 06f486c3..0610ea64 100644 --- a/java/Makefile +++ b/java/Makefile @@ -14,6 +14,9 @@ all: src/main/mal/%.java: mvn install +target/classes/mal/step%.class: src/main/mal/step%.java ${SOURCES} + mvn install + #.PHONY: stats tests $(TESTS) .PHONY: stats diff --git a/java/src/main/java/mal/step8_macros.java b/java/src/main/java/mal/step8_macros.java index 38a4aef7..d46b2024 100644 --- a/java/src/main/java/mal/step8_macros.java +++ b/java/src/main/java/mal/step8_macros.java @@ -110,7 +110,9 @@ public class step8_macros { // apply list MalVal expanded = macroexpand(orig_ast, env); - if (!expanded.list_Q()) { return expanded; } + if (!expanded.list_Q()) { + return eval_ast(expanded, env); + } MalList ast = (MalList) expanded; if (ast.size() == 0) { return ast; } a0 = ast.nth(0); diff --git a/java/src/main/java/mal/step9_try.java b/java/src/main/java/mal/step9_try.java index ceeff274..c030d386 100644 --- a/java/src/main/java/mal/step9_try.java +++ b/java/src/main/java/mal/step9_try.java @@ -112,7 +112,9 @@ public class step9_try { // apply list MalVal expanded = macroexpand(orig_ast, env); - if (!expanded.list_Q()) { return expanded; } + if (!expanded.list_Q()) { + return eval_ast(expanded, env); + } MalList ast = (MalList) expanded; if (ast.size() == 0) { return ast; } a0 = ast.nth(0); diff --git a/java/src/main/java/mal/stepA_mal.java b/java/src/main/java/mal/stepA_mal.java index 5633fb09..21c38ea2 100644 --- a/java/src/main/java/mal/stepA_mal.java +++ b/java/src/main/java/mal/stepA_mal.java @@ -112,7 +112,9 @@ public class stepA_mal { // apply list MalVal expanded = macroexpand(orig_ast, env); - if (!expanded.list_Q()) { return expanded; } + if (!expanded.list_Q()) { + return eval_ast(expanded, env); + } MalList ast = (MalList) expanded; if (ast.size() == 0) { return ast; } a0 = ast.nth(0); diff --git a/vb/step8_macros.vb b/vb/step8_macros.vb index 400dbe78..1e977aed 100644 --- a/vb/step8_macros.vb +++ b/vb/step8_macros.vb @@ -122,7 +122,7 @@ Namespace Mal ' apply list Dim expanded As MalVal = macroexpand(orig_ast, env) if not expanded.list_Q() Then - return expanded + return eval_ast(expanded, env) End If Dim ast As MalList = DirectCast(expanded, MalList) diff --git a/vb/step9_try.vb b/vb/step9_try.vb index d4a7af46..e94cca78 100644 --- a/vb/step9_try.vb +++ b/vb/step9_try.vb @@ -122,7 +122,7 @@ Namespace Mal ' apply list Dim expanded As MalVal = macroexpand(orig_ast, env) if not expanded.list_Q() Then - return expanded + return eval_ast(expanded, env) End If Dim ast As MalList = DirectCast(expanded, MalList) diff --git a/vb/stepA_mal.vb b/vb/stepA_mal.vb index 013b6098..08ba138c 100644 --- a/vb/stepA_mal.vb +++ b/vb/stepA_mal.vb @@ -122,7 +122,7 @@ Namespace Mal ' apply list Dim expanded As MalVal = macroexpand(orig_ast, env) if not expanded.list_Q() Then - return expanded + return eval_ast(expanded, env) End If Dim ast As MalList = DirectCast(expanded, MalList) -- 2.20.1