Is there equivalent of higher-order function filter
in Emacs Lisp? Like function from python or Javascript.
(filter-equivalent (lambda (n) (= (% n 2) 0)) '(1 2 3 4 5 6 7 8))
==> (2 4 6 8)
Is there equivalent of higher-order function filter
in Emacs Lisp? Like function from python or Javascript.
(filter-equivalent (lambda (n) (= (% n 2) 0)) '(1 2 3 4 5 6 7 8))
==> (2 4 6 8)
It's cl-remove-if-not
. A bit of a mouthful, but it works.
To elaborate a bit, you need
(require 'cl-lib)
to get this function. There's an alias for it, called remove-if-not
, but
I prefer not to use it, since it may look like I'm using remove-if-not
from cl
.
It's a good practice to include the prefix, not doing using namespace std
in C++,
but saying std::cout
each time.
remove-if
and remove-if-not
not in the cl compatibility package. –
Ratter remove-if
and remove-if-not
too, you should post it as answer because those are built in. –
Olette remove-if-not
in Emacs 23 is part of its CL compatibility features, it's defined in cl-seq.el
. It is always available without the need to require
anything, though, at least in my experience. Maybe in older Emacs versions, cl-seq.el
wasn't loaded by the default configuration? –
Oneidaoneil cl-lib
. –
Tanika The third-party dash.el library provides a -filter
function as an alternative to cl-remove-if-not
.
(-filter 'evenp '(1 2 3 4 5 6 7 8))
;; => (2 4 6 8)
© 2022 - 2024 — McMap. All rights reserved.