ऐसा लगता है कि यह सूचियों मॉड्यूल में असंगत है। उदाहरण के लिए, विभाजित संख्या में पहली तर्क और दूसरी सूची के रूप में सूची होती है, लेकिन उपन्यासकारों की सूची पहली तर्क के रूप में होती है और लेन दूसरे तर्क के रूप में होती है।क्या एरलांग में फ़ंक्शन तर्कों को ऑर्डर करने का कोई मूर्ख तरीका है?
उत्तर
ठीक है, मुझे थोड़ा याद है और मेरी शैली के पीछे कुछ सिद्धांत हैं।
जैसा कि ईसाई ने कहा है कि पुस्तकालयों ने विकसित किया है और तर्क आदेश प्राप्त करने के लिए प्रेरित किया है और हम उन आवेगों से महसूस करते हैं जिन्हें हम अभी प्राप्त कर रहे थे। तो उदाहरण के लिए तत्व/सेलेमेंटमेंट में तर्क आदेश क्यों है, क्योंकि यह प्रोलॉग में arg/3 predicate से मेल खाता है; तार्किक लेकिन अब नहीं। अक्सर हमारे पास चीज पहले पर काम किया जा रहा था, लेकिन दुर्भाग्य से हमेशा नहीं। यह अक्सर एक अच्छा विकल्प होता है क्योंकि यह "वैकल्पिक" तर्कों को अंत में आसानी से जोड़ा जा सकता है; उदाहरण के लिए स्ट्रिंग: सबस्ट्र/2/3। चीज के साथ कार्य अंतिम तर्क के रूप में अक्सर करीबी के साथ कार्यात्मक भाषाओं से प्रभावित होते थे, उदाहरण के लिए हैस्केल, जहां विशिष्ट कार्यों को बनाने के लिए करी और आंशिक मूल्यांकन का उपयोग करना बहुत आसान है, जिसे चीज़ पर लागू किया जा सकता है। सूचियों में उच्च आदेश कार्यों में यह बहुत ध्यान देने योग्य है।
हमारे पास एकमात्र प्रभाव ओओ दुनिया से नहीं था। :-)
आमतौर पर हम कम से कम एक मॉड्यूल के भीतर संगत होने में कामयाब रहे, लेकिन हमेशा नहीं। सूचियों को फिर से देखें। हमने कुछ स्थिरता रखने की कोशिश की, इसलिए उच्च क्रम में तर्क आदेश dict/sets में कार्य सूचियों में संबंधित कार्यों से मेल खाता है।
समस्या इस तथ्य से भी बढ़ गई कि हम, विशेष रूप से मुझे, पुस्तकालयों के लिए एक बदसूरत रवैया था। मैंने उन्हें भाषा के लिए एक विक्रय बिंदु के रूप में नहीं देखा, इसलिए मैं इसके बारे में चिंतित नहीं था। "अगर आप एक पुस्तकालय चाहते हैं जो कुछ करता है तो आप इसे लिखते हैं" मेरा आदर्श वाक्य था। इसका मतलब था कि मेरी पुस्तकालयों को संरचित किया गया था, बस एक ही संरचना के साथ नहीं। :-) यह था कि शुरुआती पुस्तकालयों में से कितने आया था।
यह, ज़ाहिर है, अनावश्यक भ्रम पैदा करता है और कम से कम विस्मय के कानून को तोड़ता है, लेकिन हम इसके बारे में कुछ भी करने में सक्षम नहीं हैं। मॉड्यूल को संशोधित करने के किसी भी सुझाव को हमेशा "शानदार" के साथ पूरा किया गया है।
मेरी व्यक्तिगत शैली आमतौर पर संरचित होती है, हालांकि मुझे नहीं पता कि यह किसी भी लिखित दिशानिर्देश या मानकों के अनुरूप है या नहीं।
मैं आम तौर पर बात या बातें हैं मैं, पहले तर्क के रूप में पर काम कर रहा हूँ या कम से कम बहुत शुरुआत के करीब; आदेश सबसे अच्छा लगता है पर निर्भर करता है। यदि कोई वैश्विक राज्य है जो पूरे मॉड्यूल के माध्यम से जंजीर है, जो आमतौर पर होता है, तो इसे अंतिम तर्क के रूप में रखा जाता है और एक बहुत ही वर्णनात्मक नाम दिया जाता है जैसे St0, St1, ... (मैं लघु चर नामों के चर्च से संबंधित हूं)। तर्क जो कार्यों (इनपुट और आउटपुट दोनों) के माध्यम से बंधे होते हैं, मैं वापसी आदेश के रूप में एक ही तर्क आदेश रखने की कोशिश करता हूं। यह कोड की संरचना को देखना अधिक आसान बनाता है। इसके अलावा मैं एक साथ जुड़े तर्कों को एक साथ समूहबद्ध करने का प्रयास करता हूं।साथ ही, जहां संभव हो, मैं पूरे मॉड्यूल में एक ही तर्क आदेश को संरक्षित करने का प्रयास करता हूं।
इनमें से कोई भी बहुत क्रांतिकारी नहीं है, लेकिन मुझे लगता है कि यदि आप एक सतत शैली रखते हैं तो यह चिंता करने की एक कम चीज़ है और यह आपके कोड को बेहतर महसूस करती है और आम तौर पर अधिक पठनीय हो जाती है। अगर तर्क आदेश गलत लगता है तो भी मैं वास्तव में कोड को फिर से लिखूंगा।
एक छोटा सा जो मदद मिल सकती है उदाहरण:
fubar({f,A0,B0}, Arg2, Ch0, Arg4, St0) ->
{A1,Ch1,St1} = foo(A0, Arg2, Ch0, St0),
{B1,Ch2,St2} = bar(B0, Arg4, Ch1, St1),
Res = baz(A1, B1),
{Res,Ch2,St2}.
यहाँ Ch
जबकि St
अधिक वैश्विक स्थिति है एक स्थानीय चर के माध्यम से श्रृंखलित है। यदि आप एक लंबा उदाहरण चाहते हैं, तो एलएफई, विशेष रूप से कंपाइलर के लिए जिथब पर कोड देखें।
यह क्षमा करने के लिए बहुत लंबा हो गया था, क्षमा करें।
पीएस ऑब्जेक्ट के बजाय मैंने चीज शब्द का उपयोग किया था, जो मैं बात कर रहा था उसके बारे में भ्रम से बचने के लिए।
नहीं, इस अर्थ में आपके द्वारा उपयोग किए जाने वाले अर्थ में कोई लगातार उपयोग नहीं किया गया है।
हालांकि, कुछ उपयोगी प्रासंगिक संकेत हैं जो विशेष रूप से लागू होते हैं जब आप गहराई से रिकर्सिव कॉल करने जा रहे हैं। उदाहरण के लिए, तर्क सूची में उसी क्रम/स्थिति में पूंछ कॉल के दौरान जो भी तर्क अपरिवर्तित रहेगा, वर्चुअल मशीन को कुछ बहुत अच्छा अनुकूलन करने की अनुमति देता है।
प्रश्न: मुझे अपने तर्क कहां रखना चाहिए? ए: तर्क जहां वे हैं, रहना चाहिए। प्राचीन ज्ञान की तरह लगता है: ओ) – Zed
- 1. हास्केल में सूचियां जोड़ने का एक मूर्ख तरीका क्या है?
- 2. क्या सी # में फ़ंक्शन को कॉल करने के तरीके के तर्कों को बताने का कोई तरीका है?
- 3. ओकैमल में, फ़ंक्शन के कई तर्कों के विरुद्ध मिलान करने का कैननिक तरीका क्या है?
- 4. एरलांग इंडेंट करने का सही तरीका क्या है?
- 5. क्या किसी विधि को पारित तर्कों की सरणी प्राप्त करने का कोई तरीका है?
- 6. एरलांग और पायथन को एकीकृत करने का सबसे अच्छा तरीका
- 7. क्या Python में फ़ंक्शन के हस्ताक्षर की जांच करने का कोई तरीका है?
- 8. क्या फ़ंक्शन वैरिएबल को डी में स्ट्रिंग में कनवर्ट करने का कोई तरीका है?
- 9. क्या वैरिएडिक मैक्रो तर्कों पर सी ++ प्रीप्रोसेसर स्ट्रिंग का उपयोग करने का कोई तरीका है?
- 10. जावा में, क्या सभी तर्कों को किसी विधि में डंप करने का एक त्वरित तरीका है?
- 11. क्या ASP.net में टैब ऑर्डर सेट करने का कोई तरीका है?
- 12. क्या कोई PHP अज्ञात फ़ंक्शन में $ कैप्चर नहीं करने का कोई तरीका नहीं है?
- 13. क्या ऐसा करने का कोई तरीका है?
- 14. क्या सी # में फ़ंक्शन इनलाइनिंग को लागू करने का कोई तरीका है?
- 15. आईडीए प्रो में, क्या फ़ंक्शन को ध्वजांकित करने का कोई तरीका है?
- 16. क्या PHP फ़ंक्शन में HTML को वापस करने का कोई तरीका है?
- 17. क्या preg_replace_callback कॉलबैक फ़ंक्शन में कोई अन्य पैरामीटर पास करने का कोई तरीका है?
- 18. क्या सी संरचना को डंप करने का कोई तरीका है?
- 19. विविध तर्कों में हेरफेर करने का मानक तरीका?
- 20. तर्कों को सी फ़ंक्शन
- 21. क्या कोई फ़ंक्शन रद्द करने का कोई तरीका है जो शून्य लौटाता है?
- 22. एरलांग में, वितरित सिस्टम को अपग्रेड करने का सबसे अच्छा तरीका क्या है?
- 23. फ़ंक्शन तर्कों में सूची समझ
- 24. जावा में कई जटिल कमांड लाइन तर्कों को पार्स करने का सबसे अच्छा तरीका क्या है?
- 25. क्या सी ++ फ़ंक्शन के अंदर फ़ंक्शन नाम प्राप्त करने का कोई तरीका है?
- 26. क्या configManager.AppSettings को ओवरराइड करने का कोई तरीका है?
- 27. क्या gif फ़ाइलों को सिंक करने का कोई तरीका है?
- 28. क्या फॉर्म प्रतिक्रिया को अनदेखा करने का कोई तरीका है?
- 29. क्या SQLLataReader को मल्टीथ्रेड करने का कोई तरीका है?
- 30. क्या वाईएक्स बिल्ड को तेज करने का कोई तरीका है?
नहीं, यह एक गड़बड़ है क्योंकि लाइब्रेरी इतनी अधिक डिजाइन किए गए थे जितना वे विकसित हुए। Rvirding के जवाब का इंतजार और उसकी शैली का पालन करें। :) – Christian
शायद ऐसा इसलिए है क्योंकि मैं ओओ पृष्ठभूमि से आ रहा हूं, लेकिन ऐसा लगता है कि सूचियों पर चलने वाले सभी कार्यों को सूची को पहले तर्क के रूप में लेना चाहिए – pjb3