/ / Защо тази мързелива последователност не печата? - клюкарство, мързеливи последователности, против, вземи

Защо тази мързелива последователност не печата? - клюкарство, мързеливи последователности, против, вземи

Не мога да разбера защо тази мързелива последователност не печата. Погледнах други публикации тук (например това) и никой не изглежда точно това, което търся. Ето кодовия сегмент ...

(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))

Всяка помощ е много ценена. Благодаря ти!

Отговори:

2 за отговор № 1

Трите коментара наистина дават отговора. Но винаги е добре да видите кода, така че тук има два начина, които дават печатна продукция.

(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)))