diff --git a/src/eval.cpp b/src/eval.cpp index 0131f89..c8df127 100644 --- a/src/eval.cpp +++ b/src/eval.cpp @@ -62,20 +62,17 @@ ValuePtr Eval::evalImpl() return evalAst(ast, env); } - auto list = std::static_pointer_cast(ast); - - if (list->empty()) { - return ast; - } - ast = macroExpand(ast, env); if (!is(ast.get())) { return evalAst(ast, env); } - // Macro-expand modifies `ast', so get the new list - list = std::static_pointer_cast(ast); + auto list = std::static_pointer_cast(ast); + + if (list->empty()) { + return ast; + } // Special forms auto nodes = list->nodes();