フォームがnilの間だけ順番に評価します。 フォームが一つでもnon-nilならば、そこで評価を中断してフォームの値を返し て終了します。全てのフォームがnilならば、nilを返します。 ;;; exp1 がnilならexp2を実行し、 ;;; exp2 がnilならexp3を実行し、 ;;; exp3 がnilなら...... ;;; 最後に実行したexpの値を返す。 (or exp1 exp2 exp3 ...) ルールに従って一つだけ値を定める場合に向いていると思います。 (or (get-buffer-file-name) ; バッファにファイル名があればそれを使う。 *foo* ; ファイル名がなければ、変数*foo*の値を使う。 (read-string "foo: ")) ; *foo*にも値が無ければ入力してもらう。