sequence
に関する2つの関連する質問:シーケンスはトランスデューサと何をするのですか?
(def xf (comp (filter odd?) (map inc)))
、
(into [] xf (range 10))
または(into() xf (range 10))
、と(sequence xf (range 10))
の関係は何ですか?into
の2番目の引数として使用できるレイジーシーケンスの構文がないので、この目的のために別の関数sequence
が必要ですか? (私はsequence
は1種類または別のシーケンスにコレクションを強制する、別の、非トランスデューサの使用を持っていることを知っている。)
sequence
の用途について、述べています
得られた配列要素を段階的に計算します。これらのシーケンスは、必要に応じて入力を徐々に消費し、中間操作を完全に実現します。この動作は、遅延シーケンスの同等の操作とは異なります。
sequence
は怠惰なシーケンスを返しません、まだトランスデューサが供給されるとsequence
のdocstringは、」言ったら、(蔵中のアイテムに変換Sのアプリケーションの怠惰なシーケンスを返すように聞こえる私に
)、....」、実際には(class (sequence xf (range 10)))
はclojure.lang.LazySeq
を返します。私はClojureトランスデューサのページから引用した最後の文を理解していないと思います。
私はそれを見つけることができませんが、私はこれが重複していることを95%確信しています。だからここにこのような質問があります。 – ClojureMostly
@ClojureMostlyという質問には喜んでお答えしたいと思います。検索が難しい。多分、部分的な答えが[この質問](http://stackoverflow.com/questions/31986435/clojure-transducers-behavior/31992370#31992370)の回答に埋もれているかもしれませんが、そうであれば、どこかで私の質問に答えてください - ここで、または私が重複した質問で。他の質問への[この回答](http://stackoverflow.com/a/25656422/1455243)も関連していますが、私の2番目の質問には答えません。 – Mars