如何使用 elisp 获取多个列表的交集?我是 elisp 新手,但我想肯定有一些内置函数或者通过 reduce 实现更好的解决方案。我拼凑了以下代码,但它似乎过于复杂。
;; get the intersection of these lists
;; result should be (3 4 5)
(setq test '((0 1 2 3 4 5) (2 3 4 5 6) (3 4 5 6 7)))
(require 'cl-lib)
(cl-remove-if-not
(lambda (x) (cl-every
(lambda (y) (> (length (memq x y) ) 0 ) )
(cdr test) ) )
(car test) )
;; ( 3 4 5)
&rest rest
,并将cl-intersection
替换为(apply 'cl-intersection (car l) (apply 'my-intersection (cdr l) rest) rest)
。以此方式,您可以使用可选参数,如:test
等。也许作为扩展版本。 - Tobias