Merge pull request #366 from bjh21/bjh21-unterminated-string-fixes
[jackhill/mal.git] / perl / step8_macros.pl
index 4e4a48d..62b4723 100644 (file)
@@ -82,7 +82,7 @@ sub eval_ast {
         }
         when (/^HashMap/) {
             my $new_hm = {};
-            foreach my $k (keys($ast->{val})) {
+            foreach my $k (keys( %{ $ast->{val} })) {
                 $new_hm->{$k} = EVAL($ast->get($k), $env);
             }
             return HashMap->new($new_hm);
@@ -105,9 +105,12 @@ sub EVAL {
 
     # apply list
     $ast = macroexpand($ast, $env);
-    if (! _list_Q($ast)) { return $ast; }
+    if (! _list_Q($ast)) {
+        return eval_ast($ast, $env);
+    }
 
     my ($a0, $a1, $a2, $a3) = @{$ast->{val}};
+    if (!$a0) { return $ast; }
     given ((ref $a0) =~ /^Symbol/ ? $$a0 : $a0) {
         when (/^def!$/) {
             my $res = EVAL($a2, $env);