मैं क्लोजर के साथ काम कर रहा हूं और जब मैंने पहले लिस्प्स के साथ डब किया है, तो मुझे घोंसला देने के लिए एक साफ रास्ता खोजने में परेशानी हो रही है। उदाहरण के लिए, निम्नलिखित समारोह पर विचार करें:अंदर कंड
(defn operate-on-list [xs]
(let [[unpack vector] (first xs)]
(cond
[(empty? xs) 'empty
unpack vector
:else (operate-on-list (rest xs))])))
यह एक सूची पर एक सुंदर मानक पुनरावर्ती आपरेशन है, लेकिन यह सूची में पहले तत्व पर कुछ काम करने के लिए इससे पहले कि यह सामग्री के साथ काम करता है की जरूरत है। मुद्दा यह है कि सूची खाली हो सकती है।
इस उदाहरण में, यह ((first xs) 1)
को ((first xs) 0)
और vector
को unpack
बदलने के लिए मुश्किल नहीं होगा, लेकिन यह जल्दी से बदसूरत हो जाता है अधिक काम (पहले XS) पर किया जाना चाहिए है।
क्या कोई कंड के माध्यम से चलो स्टेटमेंट का प्रभावी ढंग से उपयोग करने का कोई तरीका है?
धन्यवाद।
इस तरह की-Nate
हाय पाया जा सकता है - यह मेरे लिए स्पष्ट नहीं है कि तुम क्या यहाँ हासिल करने की कोशिश कर रहे हैं। आपको यह दिलचस्प http://www.assembla.com/spaces/clojure/tickets/200 और http://groups.google.com/group/clojure/browse_thread/thread/c1097ce07506fc39 मिल सकता है कृपया यह बताएं कि फ़ंक्शन क्या माना जाता है अपने प्रश्न में करने के लिए, और कुछ उदाहरण इनपुट और आउटपुट। वाक्यविन्यास एक वैध कंड कथन की तरह नहीं दिखता है क्योंकि कंडक्टर का शरीर वेक्टर में लपेटा जाता है। –