なぜget-word-idに "first"を使用する必要がありますか?これを行う正しい方法は何ですか?別のシーケンスに基づいて新しいシーケンスを返すClojure関数を作成する正しい方法は何ですか?
(defn parts-of-speech []
(lazy-seq (. POS values)))
(defn index-words [pos]
(iterator-seq (. dict getIndexWordIterator pos)))
(defn word-ids [word]
(lazy-seq (. word getWordIDs)))
(defn get-word [word-id]
(. dict getWord word-id))
(defn get-index-words []
(lazy-seq (map index-words (parts-of-speech))))
(defn get-word-ids []
(lazy-seq (map word-ids (first (get-index-words)))))
;; this works, but why do you have to use "first" in get-word-ids?
(doseq [word-id (get-word-ids)]
(println word-id))
あなたは 'lazy-seq'を間違って使用していますが、あなたが尊敬しなければならないイディオムがあります。しかし、主に、これは低レベルのものであり、 "正しい方法"は、あなたが望むものを達成するために、 'map'、' filter'、 'for'などの既存のコア関数を組み合わせることでしょう。 –
[このSOの質問を見てください](http://stackoverflow.com/questions/4992298/clojure-lazy-sequence-usage) –