में हेड प्रतिधारण "क्लोजर प्रोग्रामिंग" (पृष्ठ 98) में मुख्य प्रतिधारण के बारे में पैराग्राफ पढ़ना, मुझे पता नहीं लगा कि split-with
उदाहरण में क्या होता है। मैंने प्रतिलिपि के साथ प्रयोग करने की कोशिश की है लेकिन यह मुझे और अधिक भ्रमित कर दिया है।क्लोजर
(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