(take 2 (for [x (range 10)
:let [_ (println x)]
:when (even? x)] x))
>> (* 0
* 1
* 2
* 3
* 4
* 5
* 6
* 7
* 8
* 9
0 2)
मुझे लगता है कि मैं सिर्फ उल्लेखनीय घना था। लेकिन नहीं, यह पता चला है कि क्लोजर वास्तव में किसी भी आलसी अनुक्रम (यदि उपलब्ध हो) के पहले 32 तत्वों का मूल्यांकन करता है। आउच।क्या 'के लिए' वास्तव में क्लोजर में आलसी नहीं है?
मेरे पास :let
में एक रिकर्सिव कॉल के साथ for
था। मैं बहुत उत्सुक था कि गणना पहली बार गहराई से पहले चौड़ाई में क्यों चल रही थी। ऐसा लगता है कि गणना (हालांकि, निष्पक्ष होना, स्मृति नहीं) विस्फोटक था क्योंकि मैं रिकर्सिव पेड़ की सभी ऊपरी शाखाओं को नीचे रखता था। क्लोजर का 32-चंकिंग चौड़ाई पहले मूल्यांकन को मजबूर कर रहा था, भले ही कोड का तार्किक इरादा पहले गहराई से था।
वैसे भी, क्या आलसी दृश्यों के 32-चंकिंग के बजाय 1-चंकिंग को मजबूर करने का कोई आसान तरीका है?
धन्यवाद! यह मुझे दो घंटों तक फंस गया था। मुझे पता नहीं लगा कि (1 ले लो (कुछ मजेदार [1 2 3 4] मानचित्र)) सभी 4 तत्वों के लिए कुछ-func का मूल्यांकन करता है ... मुझे कहना होगा, यह स्पष्ट नहीं था कि यह क्यों हो रहा था, "मानचित्र" और "टेक" पर दस्तावेज़ पढ़ने से –