2017-05-01 7 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

3つのコメントが本当に答えを与えます。しかし、実際にはコードを実際に見るのが得意なので、ここでは印刷された出力を与える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))) 
関連する問題