haskell लिटरेट हास्केल(। एलएचएस) और हैडॉक




literate-programming haddock (2)

फिलहाल मैं केवल हैडॉक का उपयोग कर रहा हूं लेकिन साक्षर हास्केल के कुछ वाकई दिलचस्प उदाहरण (उदाहरण के लिए यह गिस्ट ) देखकर, मुझे एक परियोजना में इसे आजमाने में दिलचस्पी है।

मुझे मिले प्रश्न हैं:

  • आप हैडॉक टिप्पणियों के रूप में क्या लिखते हैं और आप साक्षर भाग में क्या लिखते हैं?

  • आप कई फाइलों में साक्षर प्रोग्रामिंग कैसे स्केल करते हैं? क्या कोई मुझे ऐसे उदाहरण में इंगित कर सकता है जहां एकाधिक मॉड्यूल वाले पैकेज में साक्षर प्रोग्रामिंग का उपयोग किया जाता है? बड़े पैकेज में साक्षर प्रोग्रामिंग का उपयोग करने का आपका अनुभव क्या है?

  • साक्षर हास्केल के किस स्वाद (मार्कडाउन, लेटेक्स, ...) को प्राथमिकता दी जाती है?

  • आप साक्षर हास्केल या सादा वेनिला हास्केल में प्रोग्रामिंग क्यों कर रहे हैं? क्या आप दोनों शैलियों में प्रोग्रामिंग कर रहे हैं और यदि ऐसा है तो क्यों?

  • क्या आप ब्लॉक-स्टाइल ( \begin{code} ) या बर्ड-स्टाइल ( > ) पसंद करते हैं? क्यूं कर?


यदि आप इंटरनेट पर प्रोग्राम साझा करना चाहते हैं, तो मुझे मार्कडाउन शैली में साक्षर हैकेल का संयोजन मिला है जिसमें मैथजैक्स एक महान संयोजन है। कार्यक्रम "पांडोक" इस "मार्कडाउन + एलएचएस" को पीडीएफ या एचटीएमएल सहित किसी भी प्रारूप में लेने के लिए गंभीरता से शानदार है। यदि आप एचटीएमएल को आउटपुट करने के लिए पांडोक को बताते हैं, तो आप अपने लेटेक्स गणित सूत्रों को प्रस्तुत करने के लिए -मथजैक्स (या यदि आप चाहें तो अन्य समान झंडे) का उपयोग कर सकते हैं।

इस शैली का उपयोग करते समय, मुझे पक्षी शैली बेहतर पसंद है क्योंकि यह सिर्फ मेरे लिए अधिक पठनीय है और मार्कडाउन शैली के साथ बेहतर फिट बैठता है।

मार्कडाउन के साथ पांडोक का उपयोग करने के बारे में सबसे अच्छी बात यह है कि आप अपने कोड, गणित सूत्रों में उद्धरण जोड़ सकते हैं, और वास्तव में पोर्टेबल प्रारूप प्राप्त कर सकते हैं। आप एक वैज्ञानिक शोध पत्र जैसा दिख सकते हैं लेकिन निष्पादन योग्य है और इसे ब्लॉग / विकी / वेबसाइटों पर भी पोस्ट किया जा सकता है।

नॉर्मन को वैकल्पिक बिंदु देने के लिए जहां वह कहता है कि साक्षर प्रोग्रामिंग स्पष्ट कोड व्यवस्था के लिए उपयोगी है, यह तर्क दिया जा सकता है कि हास्केल पर्याप्त अभिव्यक्तिपूर्ण है कि कोड के साथ आप जिन समस्याओं को हल करते हैं वे वास्तव में दिलचस्प हैं और वास्तव में व्याख्यात्मक पाठ से घिरे हुए हैं । गणितीय शोध पत्र के बारे में सोचें। शुद्ध गणित में अच्छे कागजात में गणितीय नोटेशन का अर्थ प्रेरणा या उच्च स्तरीय व्याख्याओं को समझाने के लिए बहुत अधिक पाठ है। नेवियर-स्टोक्स समीकरणों के बारे में एक पेपर में, उदाहरण के लिए, पाठ के साथ समीकरणों के संकेत को घेरने के लिए यह बहुत उपयोगी होगा, यह बताते हुए कि यह न्यूटन के गति के संरक्षण से कैसे संबंधित है।

संक्षेप में, मुझे मार्कडाउन + एलएचएस शैली का उपयोग करके, लेटेक्स गणित सूत्रों, पक्षी शैली और पैंडोक को एम्बेड करने के लिए डॉलर संकेतों के साथ अच्छी सफलता मिली है। मैं प्रोग्राम लिखने की सिफारिश करता हूं जैसे कि वे शोध पत्र थे और खुद को हैकेल का इलाज करते थे क्योंकि आप एक शोध पत्र में गणितीय अभिव्यक्ति करेंगे।


मैं बहुत सारे साक्षर कार्यक्रम लिखता था।

आप हैडॉक टिप्पणियों के रूप में क्या लिखते हैं और आप साक्षर भाग में क्या लिखते हैं?

बाहरी एपीआई दस्तावेज हैडॉक टिप्पणियों में जाता है। बाकी सब कुछ साक्षर भाग में जाता है। "बाकी सब कुछ" में शामिल हो सकते हैं:

  • डेटा संरचनाओं के आंतरिक आविष्कार
  • आप इस तरह से काम क्यों कर रहे हैं
  • कोड का डिजाइन क्या है
  • यह डिज़ाइन क्यों चुना गया था, अन्य डिज़ाइनों की क्या कोशिश की गई थी और वे चाहते थे

आप कई फाइलों में साक्षर प्रोग्रामिंग कैसे स्केल करते हैं?

वैसे ही आप एक बड़े LaTeX दस्तावेज़ को एकाधिक फ़ाइलों में स्केल करते हैं: प्रति मॉड्यूल एक फ़ाइल, फिर एक विशाल फ़ाइल जिसमें \include उन सभी को शामिल किया गया है।

क्या कोई मुझे ऐसे उदाहरण में इंगित कर सकता है जहां एकाधिक मॉड्यूल वाले पैकेज में साक्षर प्रोग्रामिंग का उपयोग किया जाता है?

यह हास्केल नहीं है, लेकिन क्विक सी - कंपाइलर एक बड़ा कार्यात्मक प्रोग्राम है जो साक्षर प्रोग्रामिंग का उपयोग करके लिखा गया है।

बड़े पैकेज में साक्षर प्रोग्रामिंग का उपयोग करने का आपका अनुभव क्या है?

लिखित प्रोग्रामिंग मुश्किल, कठिन, या जटिल मॉड्यूल दस्तावेज करने के लिए बहुत अच्छी तरह से काम करता है। सबसे सरल मॉड्यूल के लिए, बाहरी एपीआई दस्तावेज (उदाहरण के लिए, हैडॉक) पर्याप्त है। और कोई साक्षर कार्यक्रम वास्तव में आपको एक डिजाइन की बड़ी तस्वीर देने वाला नहीं है जिसमें एक दर्जन से अधिक मॉड्यूल शामिल हैं। इसके लिए आपको अन्य टूल्स और तकनीकों की आवश्यकता है।

साक्षर हास्केल के किस स्वाद (मार्कडाउन, लेटेक्स, ...) को प्राथमिकता दी जाती है?

यदि आप इतना बड़ा निवेश कर रहे हैं, तो मैं निश्चित रूप से गणित क्षमता, और आमतौर पर उपकरण की अधिक शक्ति के कारण लाटेक्स के साथ जाऊंगा।

आप साक्षर हास्केल या सादा वेनिला हास्केल में प्रोग्रामिंग क्यों कर रहे हैं? क्या आप दोनों शैलियों में प्रोग्रामिंग कर रहे हैं और यदि ऐसा है तो क्यों?

मेरे हास्केल कोड लगभग हमेशा के लिए सभी सादे वेनिला हैं, दो कारणों से:

  • मैं उन वरिष्ठ लोगों के साथ काम करता हूं जिनके पास हास्केल का अनुभव है, और उन्होंने साक्षर हास्केल को त्याग दिया है। उनके सिस्टम में केवल सबसे पुराना मॉड्यूल होने का कोई मौका है। एलएचएस।

  • हास्केल के लिए, साक्षर प्रोग्रामिंग एक प्रकार का अनावश्यक है। एक साक्षर-प्रोग्रामिंग टूल के बड़े लाभों में से एक यह है कि आप किसी भी बाधा से मुक्त हो जाते हैं कि संकलक या भाषा परिभाषा उस क्रम पर डाल सकती है जिसमें आपका कोड दिखाई देता है। लेकिन हास्केल में ऐसी कोई बाधा नहीं है: उपयोग से पहले कोई परिभाषा नहीं है, और एक सामान्य कार्य परिभाषा के लिए मेरे पास let बाइंडिंग या where बाध्यकारी सहायक नाम (या दोनों) का विकल्प है। साक्षर प्रोग्रामिंग कभी फैंसी टिप्पणियों के बारे में नहीं था, और "साक्षर" हास्केल के साथ जो कुछ भी आपको मिलता है। यह परेशान करने लायक नहीं है।

क्या आप ब्लॉक-स्टाइल (\ start {code}) या बर्ड-स्टाइल (>) पसंद करते हैं? क्यूं कर?

मैं दृढ़ता से ब्लॉक शैली पसंद करते हैं:

  • यह ग्रह पर हर दूसरे साक्षर-प्रोग्रामिंग उपकरण के साथ लगभग संगत है। (बर्ड ट्रैक हास्केल के लिए अद्वितीय हैं।)

  • मेरा संपादक ब्लॉक शैली के साथ बेहतर copes।







haddock