2014-07-22 6 views
7

प्रोग्रामिंग से संबंधित एक विषय पर शोध करने में मैं pointfree लैम्बडबॉट में हास्केल के लिए रीफैक्टरिंग टूल में आया था और सोच रहा था कि क्या एफ # को पॉइंटफ्री शैली में दोबारा बनाया जा सकता है?क्या एफ # को पॉइंटफ्री शैली में दोबारा बनाया जा सकता है?

मैं पॉइंटफ्री शैली के उपयोग की वकालत नहीं कर रहा हूं, लेकिन इसे एक समारोह को बेहतर ढंग से समझने के साधन के रूप में देखता हूं।

नोट: pad ने इस प्रश्न के पहले संस्करण का उत्तर दिया, लेकिन मैंने इस सवाल को दोहराया क्योंकि उत्तर F # सीखने और उपयोग करने वाले लोगों के लिए मूल्य का मूल्य है और मैं नहीं चाहता था कि कुछ करीबी वोटों के कारण इसे हटा दिया जाए।

नोट: सिर्फ इसलिए कि मैंने सवाल बदल दिया है, इसका मतलब यह नहीं है कि कोई एफ # का उपयोग करके एक बिंदु मुक्त शैली में कोड नहीं कर सकता है। यह कई मामलों में किया जा सकता है लेकिन आपके पास अनुसरण करने के लिए प्रतिबंध हैं।

+0

"हमें उपकरण, लाइब्रेरी या पसंदीदा ऑफ़-साइट संसाधन की सिफारिश करने या खोजने के लिए पूछे जाने वाले प्रश्न स्टैक ओवरफ़्लो के लिए ऑफ-विषय हैं क्योंकि वे राय वाले उत्तरों और स्पैम को आकर्षित करते हैं। इसके बजाय, समस्या का वर्णन करें और अब तक क्या किया गया है इसे हल करने के लिए। " –

उत्तर

11

लघु जवाब

सं

लांग जवाब

वहाँ एफ # में कुछ चीजें हैं जो इस तरह के एक उपकरण अव्यावहारिक बना रहे हैं। (1) .NET इंटरऑप के कारण, एफ # कोड में साइड इफेक्ट्स होते हैं और साइड इफेक्ट्स खेलने पर स्वचालित कोड रूपांतरण वास्तव में मुश्किल हो जाता है। हास्केल के साथ यह मामला नहीं है; हास्केल में समीकरण तर्क बहुत आसान है और आप अपने मूल्यांकन को बदलने के बाएं हाथ के किनारे बाएं हाथ के किनारों को फिर से लिख सकते हैं। (2) एफ # में प्वाइंट-फ्री प्रोग्रामिंग value restriction तक सीमित है। मुझे यकीन नहीं है कि आप इस मुद्दे को मारने के बिना आक्रामक रूप से कोड परिवर्तन कर सकते हैं।

मुझे लगता है कि यह मानना ​​अधिक व्यावहारिक है कि एफ # कोड शुद्ध है और विशेष मामलों में मूल्य प्रतिबंध नहीं होता है ताकि हम उपयोगकर्ताओं को कुछ संकेत दे सकें। उपयोगकर्ता मूल्यांकन के बाद विवेकपूर्ण सुझाव लागू कर सकते हैं कि सुझाव वास्तव में सही हैं। यह आपके द्वारा संदर्भित HLint दृष्टिकोण के करीब है। FSharpLint ने इस दिशा में कुछ लिटिंग नियम जोड़े हैं।

+0

इस बारे में विस्तार देने के लिए धन्यवाद कि ऐसा उपकरण F # के लिए क्यों नहीं हो सकता है। यह भविष्य की ज़रूरत के मामले में दूर रखने के लिए एक अच्छा तथ्य बनाता है। शायद कुछ दिन मैं ऐसा टूल बनाउंगा लेकिन उन स्थानों की पहचान करूंगा जो मूल्य प्रतिबंध का कारण बनते हैं और इस प्रकार हर कोई इससे सीख सकता है। –

+0

आप उस भाषा के उप-समूह की पहचान कर सकते हैं जो पॉइंट-फ्री रिफैक्टरिंग लागू करने के लिए सुरक्षित है। हालांकि, 'शुद्ध' कीवर्ड या 'शुद्ध' विशेषता जैसे कुछ विशेष मार्करों के बिना, यह सुनिश्चित करना मुश्किल है कि आप सुरक्षित क्षेत्र में रहें। – pad

संबंधित मुद्दे