Last update: 2023-11-29

連番のリストを作成する   Emacs EmacsLisp

Emacs Lispを使って簡単に連番のリストを作る方法が見つからなかったので自分で関数を書いてみた。

(defun my/make-sequence (end &optional beg)
  (let ((l '())
        (beg (or beg 0)))
    (dotimes (i (- end beg))
      (push (+ i beg) l))
    (reverse l)))

引数を1つだけ指定すると0からN-1までの連番を作成する。Pythonでいうところの list(range(10)) に相当する。

(my/make-sequence 10)
0 1 2 3 4 5 6 7 8 9

第二引数には開始番号を指定する。

(my/make-sequence 5 3)
3 4
(my/make-sequence 5 -3)
-3 -2 -1 0 1 2 3 4

連番を作成できない時は nil を返す。

(my/make-sequence 4 5)
nil