इस question का उत्तर देते हुए, मुझे एहसास हुआ कि आपको को ऑब्जेक्ट को कार्य करने की अनुमति देता है और समानांतर फ़ंक्शन परिभाषाओं का उपयोग करने के लिए इसका उपयोग करता है।फ़ंक्शन की समानांतर घोषणा एक अच्छा विचार है?
असल में, मान लें कि मैं इस
a = (1+)
b = (2+)
c = (3+)
d = (4+)
e = (5+)
क्या DRYest जिस तरह से यह लिखने के लिए होगा की तरह कुछ करना चाहते हैं करते हैं? मेरा मतलब है, सभी पैटर्न समान होने के बाद: फ़ंक्शन का नाम अनुमानित नहीं किया जा सकता है और न ही जोड़ने की राशि, लेकिन मुझे हर बार +
लिखने से बचने में सक्षम होना चाहिए (पाठ्यक्रम के टेम्पलेट हास्केल का उपयोग किए बिना)।
असल में, मैं map
या कुछ समान उपयोग करने में सक्षम होना चाहता हूं और ऐसा लगता है कि map
बस काम करता है!
[a,b,c,d,e] = map (+) [1..5]
और voila!
कि बहुत कम और शायद अधिक अर्थपूर्ण है, और यह काम करता है:
> a 10
11
> b 10
12
etc ...
तो मेरे सवाल है, यह एक अच्छा पैटर्न (स्थिति उस तरह का में) का उपयोग करने के लिए है और यदि नहीं है, जो ड्रॉ रहे हैं बैक (मुझे पता है कि में समतुल्य अनुभव खरीदते हैं रूबी एक दुःस्वप्न है, लेकिन कारण हास्केल के साथ लागू नहीं होते हैं)?
अद्यतन
मैं समझता हूँ पठनीयता इस तरह के कोड का व्यक्तिपरक है और के रूप में राय-आधारित देखा जा सकता है। हालांकि, ऐसा करने के कुछ उद्देश्य कारण नहीं हो सकते हैं। उदाहरण के लिए, रूबी (कम से कम 1.8), define_method
का उपयोग करके परिभाषित विधियां अधिकांश आईडीई और टैग निर्माता के लिए अदृश्य हैं। इसके अलावा, आप डीबगर इत्यादि का उपयोग करके उनमें कदम नहीं उठा सकते ... जो उन्हें अभ्यास में असुविधाजनक बनाते हैं। मैं में इसी तरह के कारण के लिए पूछ रहा हूँ हास्केल
यह प्रश्न "मुख्य रूप से राय-आधारित" करीबी वोटों को आकर्षित कर रहा है - हालांकि मुझे लगता है कि प्रश्न में विषयपरकता की एक डिग्री है, यह अभी भी एक उचित उद्देश्य के उत्तर में सक्षम है और इसे छोड़ दिया जाना चाहिए। –