From 18277d9566d6ccb3e5a18846c266cec516cf4e31 Mon Sep 17 00:00:00 2001 From: Pekka Laiho Date: Fri, 5 Jun 2020 15:55:38 +0700 Subject: [PATCH] optimize: remove array_map --- src/Evaller.php | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/Evaller.php b/src/Evaller.php index b544060..459f166 100644 --- a/src/Evaller.php +++ b/src/Evaller.php @@ -202,10 +202,12 @@ class Evaller if ($ast instanceof Symbol) { // Lookup symbol from env return $env->get($ast->getName()); - } elseif ($ast instanceof MList) { - return new MList(array_map(fn ($a) => $this->eval($a, $env), $ast->getData())); - } elseif ($ast instanceof Vector) { - return new Vector(array_map(fn ($a) => $this->eval($a, $env), $ast->getData())); + } elseif ($ast instanceof Seq) { + $results = []; + foreach ($ast->getData() as $val) { + $results[] = $this->eval($val, $env); + } + return $ast::new($results); } elseif ($ast instanceof Hash) { $results = []; foreach ($ast->getData() as $key => $val) {