From b6a9d67435fe865495644ac89915eda1d79d56cd Mon Sep 17 00:00:00 2001 From: Paul Guyot Date: Sat, 25 Jul 2026 07:56:19 +0200 Subject: [PATCH] Use optimized version of `lists:delete/2` Follow OTP's implementation of a stack-heavier version of `lists:delete/2` which is even faster with JIT than a NIF implementation Signed-off-by: Paul Guyot --- libs/estdlib/src/lists.erl | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/libs/estdlib/src/lists.erl b/libs/estdlib/src/lists.erl index 6688d02c59..825acbe4eb 100644 --- a/libs/estdlib/src/lists.erl +++ b/libs/estdlib/src/lists.erl @@ -153,16 +153,12 @@ member(_, []) -> %% @end %%----------------------------------------------------------------------------- -spec delete(E :: term(), L :: list()) -> Result :: list(). -delete(E, L) -> - delete(E, L, []). - -%% @private -delete(_, [], Accum) -> - ?MODULE:reverse(Accum); -delete(E, [E | T], Accum) -> - ?MODULE:reverse(Accum) ++ T; -delete(E, [H | T], Accum) -> - delete(E, T, [H | Accum]). +delete(Item, [Item | Rest]) -> + Rest; +delete(Item, [H | Rest]) -> + [H | delete(Item, Rest)]; +delete(_, []) -> + []. %%----------------------------------------------------------------------------- %% @param L the list to reverse