Clojure范围具有特定的开始和无限结束

时间:2015-08-17 03:25:39

标签: clojure

根据docs range函数有四种形式:

  • (range) 0 - 无限
  • (range end) 0 - 结束
  • (range start end) start - end
  • (range start end step)开始 - 逐步跳过

那么我如何声明一个代表x到无穷大的范围?

我也可能会问,如(range x infinity)这样的东西可能有效吗?

3 个答案:

答案 0 :(得分:26)

(iterate inc x)将为您提供以x开头的懒惰无限数字序列。

答案 1 :(得分:7)

这样的事情怎么样:

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

请注意inc'+'以支持任意精确度。

答案 2 :(得分:5)

怎么样:

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