Clojure 为什么这个懒惰的序列不打印?
我不明白为什么这个懒惰的序列不打印。我看过这里的其他帖子(比如),似乎没有一篇是我想要的。这是代码段Clojure 为什么这个懒惰的序列不打印?,clojure,lazy-sequences,cons,take,Clojure,Lazy Sequences,Cons,Take,我不明白为什么这个懒惰的序列不打印。我看过这里的其他帖子(比如),似乎没有一篇是我想要的。这是代码段 (defn exp [x n] (reduce * (repeat n x)) ) (defn primes ([] (primes 1 1)) ([n m] (if (= n 1) (lazy-seq (cons (* (exp 7 n) (exp 11 m)) (primes (+ m 1) (1)))) (lazy-seq (cons (* (ex
(defn exp [x n]
(reduce * (repeat n x))
)
(defn primes
([] (primes 1 1))
([n m] (if (= n 1) (lazy-seq (cons (* (exp 7 n) (exp 11 m)) (primes (+ m 1) (1))))
(lazy-seq (cons (* (exp 7 n) (exp 11 m)) (primes (- n 1) (+ m 1)))))
)
)
(take 4 (primes))
非常感谢您的帮助。谢谢大家! 这三条评论确实给出了答案。但是实际看到代码总是很好的,所以这里有两种方法可以提供打印输出
(defn exp [x n]
(reduce * (repeat n x)))
(defn primes
([] (primes 1 1))
([n m] (if (= n 1)
(lazy-seq (cons (* (exp 7 n) (exp 11 m)) (primes (+ m 1) 1)))
(lazy-seq (cons (* (exp 7 n) (exp 11 m)) (primes (- n 1) (+ m 1)))))))
(defn x-1 []
(doseq [prime (take 4 (primes 2 2))]
(println prime)))
(defn x-2 []
(->> (primes 2 2)
(take 4)
(apply println)))
你没有
打印
任何地方,这就是它没有打印的原因。因为它很懒!;)<代码>(1)是一个错误。您不是要将1作为函数调用。您希望它打印什么?