2017-05-01 4 views
1

이 지연 시퀀스가 ​​왜 인쇄되지 않는지 알 수 없습니다. 여기에 다른 게시물 (예 : this)을 봤는데 아무도 정확히 내가 뭘 찾고있는 것 같습니다. 다음은 코드 세그먼트입니다.왜이 지연 시퀀스가 ​​인쇄되지 않습니까?

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

어떤 도움을 주시면 감사하겠습니다. 고맙습니다!

+0

어디에도 'print'가 없으므로 인쇄되지 않습니다. – zerkms

+0

게으르다! ;) – Shlomi

+2

'(1)'은 오류입니다. 1을 함수로 부르는 것은 아닙니다. – amalloy

답변

2

세 가지 주석은 실제로 답변을 제공합니다. 그러나 실제로 코드를 실제로 보는 것이 좋으므로 인쇄 된 결과물을주는 두 가지 방법이 있습니다.

(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))) 
관련 문제