From c279f9111e3283cc9968ab2ebc7adf332bcba3e4 Mon Sep 17 00:00:00 2001 From: Riyyi Date: Mon, 10 Apr 2023 22:05:22 +0200 Subject: [PATCH] Eval: Only need to cast AST once --- src/eval.cpp | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) 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();