Esiste l'equivalente della funzione di ordine superiore filter
in Emacs Lisp? Come la funzione di Python o Javascript.Funzione filtro in Elisp
(filter-equivalent (lambda (n) (= (% n 2) 0)) '(1 2 3 4 5 6 7 8))
==> (2 4 6 8)
Esiste l'equivalente della funzione di ordine superiore filter
in Emacs Lisp? Come la funzione di Python o Javascript.Funzione filtro in Elisp
(filter-equivalent (lambda (n) (= (% n 2) 0)) '(1 2 3 4 5 6 7 8))
==> (2 4 6 8)
È cl-remove-if-not
. Un po 'di boccone, ma funziona.
Elaborare un po ', è necessario
(require 'cl-lib)
per ottenere questa funzione. C'è un alias per questo, chiamato remove-if-not
, ma Preferisco non usarlo, dal momento che può sembrare che sto usando remove-if-not
da cl
.
È buona norma includere il prefisso, non facendo using namespace std
in C++, ma dicendo std::cout
ogni volta.
In Emacs 23, sembra esserci un 'remove-if' e' remove-if-not' non nel pacchetto di compatibilità cl. – Vatine
@Vatine Emacs 24 hanno 'remove-if' e' remove-if-not', dovresti postarlo come risposta perché sono integrati. – jcubic
@Vatine, @jbubic: il 'remove-if-not' in Emacs 23 fa parte delle sue caratteristiche di compatibilità CL, è definito in 'cl-seq.el'. È sempre disponibile senza la necessità di "richiedere" nulla, anche se, almeno nella mia esperienza. Forse nelle vecchie versioni di Emacs, 'cl-seq.el' non è stato caricato dalla configurazione di default? –
possibile duplicato di [Filtro Lisp fuori risultati da elenco non corrispondenti predicato] (http://stackoverflow.com/questions/2234860/lisp-filter-out-results-from-list-not-matching-predicate) –