Есть ли эквивалент функции более высокого порядка filter
в Emacs Lisp? Как функция из python или Javascript.Функция фильтра в Elisp
(filter-equivalent (lambda (n) (= (% n 2) 0)) '(1 2 3 4 5 6 7 8))
==> (2 4 6 8)
Есть ли эквивалент функции более высокого порядка filter
в Emacs Lisp? Как функция из python или Javascript.Функция фильтра в Elisp
(filter-equivalent (lambda (n) (= (% n 2) 0)) '(1 2 3 4 5 6 7 8))
==> (2 4 6 8)
Это cl-remove-if-not
. Немного глоток, но он работает.
Выработать немного, вам нужно
(require 'cl-lib)
, чтобы получить эту функцию. Там есть псевдоним, который называется remove-if-not
, но Я предпочитаю не использовать его, так как может показаться, что я использую remove-if-not
от cl
.
Рекомендуется использовать префикс, не делая using namespace std
в C++, , но говоря std::cout
каждый раз.
В Emacs 23, похоже, в пакете совместимости cl есть 'remove-if' и' remove-if-not'. – Vatine
@Vatine Emacs 24 имеют 'remove-if' и' remove-if-not' тоже, вы должны отправить его как ответ, потому что они встроены. – jcubic
@Vatine, @jbubic: 'remove-if-not' в Emacs 23 является частью его функций совместимости CL, он определен в 'cl-seq.el'. Он всегда доступен без необходимости «требовать» что угодно, хотя, по крайней мере, в моем опыте. Может быть, в старых версиях Emacs 'cl-seq.el' не был загружен конфигурацией по умолчанию? –
возможно дубликат [LISP отфильтровывать результаты из списка, не соответствующего предиката] (http://stackoverflow.com/questions/2234860/lisp-filter-out-results-from-list-not-matching-predicate) –