From f0f4ba45b0413a9b42b8acdb87392cf8c31622b5 Mon Sep 17 00:00:00 2001 From: Riyyi Date: Mon, 3 Apr 2023 21:41:02 +0200 Subject: [PATCH] Eval: Improve logic sharing between List and Vector --- src/eval.cpp | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/src/eval.cpp b/src/eval.cpp index 74ee110..ec12c7c 100644 --- a/src/eval.cpp +++ b/src/eval.cpp @@ -87,21 +87,10 @@ ASTNodePtr Eval::evalAst(ASTNodePtr ast, EnvironmentPtr env) } return result; } - else if (is(ast_raw_ptr)) { - auto result = makePtr(); - auto nodes = std::static_pointer_cast(ast)->nodes(); - for (auto node : nodes) { - ASTNodePtr eval_node = evalImpl(node, env); - if (eval_node == nullptr) { - return nullptr; - } - result->add(eval_node); - } - return result; - } - else if (is(ast_raw_ptr)) { - auto result = makePtr(); - auto nodes = std::static_pointer_cast(ast)->nodes(); + else if (is(ast_raw_ptr)) { + std::shared_ptr result = nullptr; + (is(ast_raw_ptr)) ? result = makePtr() : result = makePtr(); + auto nodes = std::static_pointer_cast(ast)->nodes(); for (auto node : nodes) { ASTNodePtr eval_node = evalImpl(node, env); if (eval_node == nullptr) {