リストは、memq と delp を用いることで(数学的な)集合として用いることができま す。しかし union(訳注:和集合)や intersection(訳注:積集合)やその他の集合関連 の関数は、 GNU Emacs Lisp では定義されていません。
Function: memq object list
この関数は、 object が list の要素であるか否かを調べます。要素である場合、 memq は ( object が最初に現われた場所を頭にして)リストの後ろの部分を返しま す。要素でない場合 nil を返します。 memq は eq を用いて調べます、このため (名前の終りが) "q" になっています。
(memq 2 '(1 2 3 2 1)) => (2 3 2 1) (memq '(2) '((1) (2))) => nil
Function: delq object list
この関数は、 list から object に eq な(全ての)要素を削除します。 object が リストの最初の(諸)要素である場合 (この場合 delq はただリストの cdr(s) を返 すだけです) を除いて list を変更します。
object を除いたリストを返します(これはその最初の要素を削除しない限り、 list と eq になります)。
(setq l '(1 2 3 (4))) => (1 2 3 (4)) (delq 1 l) => (2 3 (4))
l => (1 2 3 (4)) (delq 2 l) => (1 3 (4)) l => (1 3 (4)) (delq '(4) l) => ( 1 3 (4))