आपका संस्करण मेरे लिए अच्छा लग रहा है। क्लोजर कोड बेस में आपके द्वारा देखे जाने वाले सामान्य नाम संग्रह के लिए 'coll' है। मैंने 'एक्सएस' भी देखा है जो हास्केल शैली है, मुझे लगता है। आप विभिन्न सम्मेलनों पर Clojure library coding standards का भी उल्लेख कर सकते हैं।
उदाहरण पर वापस आ रहा है: दो अवलोकन।
- उपयोग करें: अन्य सामान्य लिस्प शैली 'टी' के बजाय, 'कंड' से बचने की स्थिति के रूप में उपयोग करें।
- सूचियों को मानने के बजाय, अनुक्रमों को सोचें।
मन में इन दोनों के साथ
, अगर मैं अपने कोड को फिर से लिखने:
user> (defn mapper [coll f]
(cond
(not (seq coll)) nil
:else (conj (mapper (next coll) f)
(f (first coll)))))
#'user/mapper
user> (mapper '(1 2 3) #(* % %))
(1 4 9)
user> (mapper [1 2 3] #(* % %))
(1 4 9)
ध्यान दें कि संयोजक "सही काम" करता है जहाँ तक संग्रह में चिंतित हैं। यह एक वेक्टर की पूंछ के लिए, सूची के सिर में नया तत्व जोड़ता है और इसी तरह। पारंपरिक लिस्प में पहले/आराम मुहावरे के बजाय 'अगली' के उपयोग को भी ध्यान दें। 'अगला' पहले तत्व के बाद तत्वों का अनुक्रम देता है। इसलिए, संग्रह पर seq'ing द्वारा खाली-जास की जांच की जा सकती है जो खाली सूची या खाली वेक्टर के लिए शून्य वापस आ जाएगी। इस तरह यह सभी संग्रहों के लिए काम करता है।
स्रोत
2010-08-11 13:35:47
मुझे लगता है कि उपयोग करने के लिए [नक्शा] (http://clojure.github.com/clojure/clojure.core-api है यह करने के लिए _most_ मुहावरेदार रास्ता .html # clojure.core/map) फ़ंक्शन: '(नक्शा पहले '((नीला लाल) (हरा लाल) (सफेद लाल)))'। – Jonas