Функция фильтра в Elisp

Существует ли эквивалент функции более высокого порядка filter в Emacs Lisp? Подобно функции из python или Javascript.

(filter-equivalent (lambda (n) (= (% n 2) 0)) '(1 2 3 4 5 6 7 8))

==> (2 4 6 8)

Ответ 1

Это cl-remove-if-not. Немного глоток, но он работает.

Чтобы разработать немного, вам нужно

(require 'cl-lib)

чтобы получить эту функцию. Там есть псевдоним, называемый remove-if-not, но Я предпочитаю не использовать его, так как может показаться, что я использую remove-if-not из cl.

Хорошей практикой является включение префикса, а не выполнение using namespace std в С++, но говоря std::cout каждый раз.

Ответ 2

Сторонняя библиотека dash.el предоставляет функцию -filter в качестве альтернативы cl-remove-if-not.

(-filter 'evenp '(1 2 3 4 5 6 7 8))

;; => (2 4 6 8)