Clojure समारोहक्लोजर फ़ंक्शन क्यों नहीं है जिसमें आलसी फ़ंक्शन कॉल आलसी भी आते हैं?
(reductions + 0 (cycle [1 1 -1]))
एक दृश्य पैदा करता है [0 1 2 1 2 3 2 3 4 3 4 5 ...]। दुर्भाग्यवश, यह अनुक्रम आलसी नहीं है।
cycle
और reductions
दोनों आलसी अनुक्रम लौटने के रूप में प्रलेखित हैं, मुझे उम्मीद है कि उन कार्यों के इस संयोजन को आलसी अनुक्रम वापस करने की उम्मीद है। अनुक्रम को आलसी लौटने के लिए मैं इसे कैसे और कैसे ठीक कर सकता हूं?
एक अधिक जटिल उदाहरण है कि एक ही समस्या से पता चलता:
(reductions (fn [x f] (f x)) 0 (cycle [inc inc dec]))
(मुझे लगता है कि किसी भी फर्क नहीं पड़ता मामले में यह दिखाने के लिए, क्योंकि इस संस्करण की तरह मैं अंत में काम करना चाहते हैं है,)
धन्यवाद :)। मैंने इसे रोकने के लिए अनुक्रम को एक (डीफ ...) द्वारा अलियासिंग करने की कोशिश की, लेकिन निश्चित रूप से (अब मुझे एहसास हुआ) जो काम नहीं करता है। इसे नामित करना (defn ...) ठीक काम करता है। – Confusion
यह जांचने का एक और सटीक तरीका है कि कोई फ़ंक्शन आलसी है या नहीं, इसे एहसास में लपेट रहा है? । अगर वह झूठा लौटाता है तो यह काम आलसी है। => (एहसास हुआ? (कटौती +0 (चक्र [1 1 -1])) झूठी – NielsK
'एहसास हुआ?' इस उद्देश्य के लिए बहुत खराब काम करता है (वास्तव में, ज्यादातर उद्देश्यों के लिए; उम्मीद है कि यह जल्द ही सुधार हो जाएगा)। इन सभी मानों पर 'एहसास हुआ?' आज़माएं: '[]', 'nil',' '(a b c) ',' (iterate inc 0) ', और आप देखेंगे कि मेरा क्या मतलब है। – amalloy