Тип данных диапазона или генератор в Emacs Lisp (elisp)?

Что такое эквивалент elisp для Python range(start, end, [step])?

Ответ 1

number-sequence похож на python range, но его результат сильно отличается. Например:

(number-sequence 5)
 => (5)
(number-sequence 1 5)
 => (1 2 3 4 5)
(number-sequence 1 5 2)
 => (1 3 5)

Я использую эту функцию, чтобы дать мне такой вывод из python range:

(defun py-range (start &optional end step)
  (unless end
    (setq end start
      start 0))
  (number-sequence start (1- end) step))

Теперь все работает так, как ожидалось:

(py-range 5)
 => (0 1 2 3 4)
(py-range 1 5)
 => (1 2 3 4)
(py-range 1 5 2)
 => (1 3)

Ответ 2

(number-sequence FROM &optional TO INC)