dolist ってみた

dolist はリストから要素を 1 つ取り出して実行し、また 1 つ取り出して実行します。
これをリストの要素が無くなるまで繰り返します。
試しに auto-mode-alist の内容を見てみましょう。

(dolist (x auto-mode-alist)
  (message "%s" x))

これは次の while を使ったコードと等価です。

(let ((x)
      (xs auto-mode-alist))
  (while (not (null xs))
    (setq x (car xs)
          xs (cdr xs))

    (message "%s" x)))

x が先頭の要素、xs が先頭の要素を除いたリストです。
dolist の例では while の例の xs が見当たりませんが、必要ないので書いていないだけで dolist の第二要素の x と auto-mode-alist の間に xs を書くことができます。

つまり:

(dolist (x xs auto-mode-alist)
  (message "%s" x))

は、最初の dolist を使ったコードと全く同じです。

gnu の dolist の説明?がよく分からなかったので書いてみた。