連番入力、よく忘れます

Emacs で連番を挿入する方法のまとめ | ブログが続かないわけ を読んでいて、なんとなく。

(defun .. (start end &optional step)
  "Retrun list of sequential numbers."
  (let ((step (or step 1)))
    (if (> step 0)
        (loop for i from start to end by step collect i))))

(defun ..p (start end &optional step print-format)
  "Retrun string of sequential numbers."
  (let ((print-format (or print-format "%d ")))
    (mapconcat '(lambda (x) (format print-format x)) (.. start end step) "")))


(.. 1 10)            ; => (1 2 3 4 5 6 7 8 9 10)
(.. 1 10 2)          ; => (1 3 5 7 9)

(..p 1 10)           ; => "1 2 3 4 5 6 7 8 9 10 " ; ここがちょっとダサい
(..p ?a ?z nil "%c") ; => "abcdefghijklmnopqrstuvwxyz"

みたいな。