Go to the first, previous, next, last section, table of contents.

リストを集合として用いる

リストは、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))


Go to the first, previous, next, last section, table of contents.