Có tương đương với hàm bậc cao hơn filter
trong Emacs Lisp không? Giống như chức năng từ python hoặc Javascript.Chức năng lọc trong Elisp
(filter-equivalent (lambda (n) (= (% n 2) 0)) '(1 2 3 4 5 6 7 8))
==> (2 4 6 8)
Có tương đương với hàm bậc cao hơn filter
trong Emacs Lisp không? Giống như chức năng từ python hoặc Javascript.Chức năng lọc trong Elisp
(filter-equivalent (lambda (n) (= (% n 2) 0)) '(1 2 3 4 5 6 7 8))
==> (2 4 6 8)
Đó là cl-remove-if-not
. Một chút của một chút, nhưng nó hoạt động.
Để xây dựng một chút, bạn cần
(require 'cl-lib)
để có được chức năng này. Có một bí danh cho nó, được gọi là remove-if-not
, nhưng Tôi không muốn sử dụng nó, vì có vẻ như tôi đang sử dụng remove-if-not
từ cl
.
Thực tiễn tốt là bao gồm tiền tố, không làm using namespace std
trong C++, nhưng mỗi lần nói std::cout
.
Trong Emacs 23, có vẻ như là một 'remove-if' và' remove-if-not' không nằm trong gói tương thích cl. – Vatine
@Vatine Emacs 24 có 'remove-if' và' remove-if-not' quá, bạn nên đăng nó như là câu trả lời vì chúng được xây dựng. – jcubic
@Vatine, @jbubic: 'remove-if-not' trong Emacs 23 là một phần của các tính năng tương thích CL của nó, nó được định nghĩa trong 'cl-seq.el'. Nó luôn luôn có sẵn mà không cần phải "yêu cầu" bất cứ điều gì, mặc dù, ít nhất là trong kinh nghiệm của tôi. Có thể trong các phiên bản Emacs cũ hơn, 'cl-seq.el' không được tải theo cấu hình mặc định? –
thể trùng lặp của [filter lisp ra kết quả ra khỏi danh sách không phù hợp với vị ngữ] (http://stackoverflow.com/questions/2234860/lisp-filter-out-results-from-list-not-matching-predicate) –