Clojure диапазон с конкретным началом и бесконечным концом

В соответствии с docs функция range имеет четыре формы:

  • (range) 0 - Бесконечность
  • (range end) 0 - end
  • (range start end) start-end
  • (range start end step) шаг за шагом по завершению

Итак, как бы объявить диапазон, представляющий x для Infinity?

Я также могу спросить, как справиться с бесконечностью, как что-то вроде (range x infinity) может работать?

Ответ 1

(iterate inc x) даст вам ленивую бесконечную последовательность чисел, начиная с x.

Ответ 2

Как насчет чего-то вроде этого:

(defn my-range
  ([start] (iterate inc' start))
  ([start step] (iterate #(+' % step) start)))

Обратите внимание на inc' и +' для поддержки произвольной точности.

Ответ 3

Как насчет:

(defn range-from [start]
   (drop start (range)))