"Clojure Programming"(98ページ)でヘッドの保持についての段落を読むと、split-with
の例で何が起こるかわかりませんでした。私はreplで実験しようとしましたが、それは私をもっと混乱させました。Clojureのヘッド保持
(time (let [r (range 1e7)
a (take-while #(< % 12) r)
b (drop-while #(< % 12) r)]
[(count a) (count b)]))
"Elapsed time: 1910.401711 msecs"
[12 9999988]
(time (let [r (range 1e7)
a (take-while #(< % 12) r)
b (drop-while #(< % 12) r)]
[(count b) (count a)]))
"Elapsed time: 3580.473787 msecs"
[9999988 12]
(time (let [r (range 1e7)
a (take-while #(< % 12) r)
b (drop-while #(< % 12) r)]
[(count b)]))
"Elapsed time: 3516.70982 msecs"
[9999988]
私はa
を計算していない場合は、最後の例からもわかるように、時間がかかるが何とか成長します。私はここに何かが恋しいと思っていますが、何ですか?
この質問は、良い答えを与えるhttp://stackoverflow.com/questions/15994316/clojure-head-retentionの複製です。 – robvir