From 1534f6f55b0bae755190c45de7dcf56189ef6a14 Mon Sep 17 00:00:00 2001 From: Michiel Borkent Date: Mon, 29 Aug 2022 16:45:37 +0200 Subject: [PATCH] reverse, fixes #61 --- core.js | 7 +++++++ resources/clava/core.edn | 1 + test/clava/compiler_test.cljs | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/core.js b/core.js index 4709f89a..29ab7cea 100644 --- a/core.js +++ b/core.js @@ -935,3 +935,10 @@ export function keep(pred, coll) { } }); } + +export function reverse(coll) { + if (coll instanceof Array) { + // performance: we don't need to copy to another array first + return coll.reverse(); + } else return [...coll].reverse(); +} diff --git a/resources/clava/core.edn b/resources/clava/core.edn index 59e675c7..0f382f53 100644 --- a/resources/clava/core.edn +++ b/resources/clava/core.edn @@ -74,6 +74,7 @@ repeat reset_BANG_ rest + reverse satisfies_QMARK_ second select_keys diff --git a/test/clava/compiler_test.cljs b/test/clava/compiler_test.cljs index ab207a83..4ba7a447 100644 --- a/test/clava/compiler_test.cljs +++ b/test/clava/compiler_test.cljs @@ -1094,5 +1094,9 @@ (is (eq (keep #(when (odd? %) (inc %)) [1 2 3]) (vec (jsv! '(keep #(when (odd? %) (inc %)) [1 2 3])))))) +(deftest reverse-test + (is (eq (reverse [1 2 3]) (jsv! '(reverse [1 2 3])))) + (is (eq (reverse (range 10)) (jsv! '(reverse (range 10)))))) + (defn init [] (cljs.test/run-tests 'clava.compiler-test 'clava.jsx-test))