12

filterEmacs Lisp 中是否有等效的高阶函数?就像来自 python 或 Javascript 的函数。

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

==> (2 4 6 8)
4

2 回答 2

14

cl-remove-if-not。有点拗口,但确实有效。

详细说明一下,您需要

(require 'cl-lib)

来获得这个功能。它有一个别名,称为remove-if-not,但我不想使用它,因为它看起来像是我在使用remove-if-notfrom cl

包含前缀是一个很好的做法,不是using namespace std在 C++ 中这样做,而是std::cout每次都说。

于 2013-09-25T09:46:09.573 回答
12

第三方dash.el库提供了一个-filter函数作为cl-remove-if-not.

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

;; => (2 4 6 8)
于 2013-09-25T19:42:11.993 回答