Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure 微调range的懒惰_Clojure_Lazy Evaluation - Fatal编程技术网

Clojure 微调range的懒惰

Clojure 微调range的懒惰,clojure,lazy-evaluation,Clojure,Lazy Evaluation,此代码: (first (map (fn [d] (apply * (repeat d 10))) (range))) Yeals是一个整数溢出异常,而此代码: (first (map (fn [d] (apply * (repeat d 10))) (range 0 1))) 耶尔德1 两个代码都应该是1,但由于某种原因,范围的惰性有一种奇怪的行为。它似乎得到了大量的数据,而不是一次

此代码:

(first (map (fn [d] 
              (apply * (repeat d 10)))
            (range)))
Yeals是一个整数溢出异常,而此代码:

(first (map (fn [d] 
              (apply * (repeat d 10)))
            (range 0 1)))
耶尔德1


两个代码都应该是1,但由于某种原因,范围的惰性有一种奇怪的行为。它似乎得到了大量的数据,而不是一次只得到一个。是否可以使范围以所需的方式运行?

作为性能优化,范围被分块。有几种方法可以解决这个问题,包括使用
(iterate inc 0)
unchunk
(有几个版本,这个版本是复制自)


范围
被分块,作为性能优化。有几种方法可以解决这个问题,包括使用
(iterate inc 0)
unchunk
(有几个版本,这个版本是复制自)


范围
被分块,作为性能优化。有几种方法可以解决这个问题,包括使用
(iterate inc 0)
unchunk
(有几个版本,这个版本是复制自)


范围
被分块,作为性能优化。有几种方法可以解决这个问题,包括使用
(iterate inc 0)
unchunk
(有几个版本,这个版本是复制自)


好的,我刚刚意识到我的问题是重复的。但是,无论如何,我认为它应该被接受,因为它更直接。它比另一个更好作为参考。好的,我刚刚意识到我的问题是重复的。但是,无论如何,我认为它应该被接受,因为它更直接。它比另一个更好作为参考。好的,我刚刚意识到我的问题是重复的。但是,无论如何,我认为它应该被接受,因为它更直接。它比另一个更好作为参考。好的,我刚刚意识到我的问题是重复的。但是,无论如何,我认为它应该被接受,因为它更直接。它比另一个更好地作为参考。
(defn unchunk
  [s]
  (lazy-seq
    (when (seq s)
      (cons (first s)
            (unchunk (rest s))))))
user=> (first (map (fn [d]
                     (apply * (repeat d 10)))
                   (unchunk (range)))
1