2009-01-20 18 views
30

मैं एफ # सीखने की प्रक्रिया में हूं और अब तक इसका आनंद ले रहा हूं। ऑनलाइन लगभग सभी उदाहरण हल्के सिंटैक्स (# प्रकाश) का उपयोग करते हैं; हालांकि, ज्यादातर मामलों में उदाहरण के लिए इस बारे में एक टिप्पणी भी दी गई है।एफ # - क्या मुझे # लाइट के साथ या बिना सीखना चाहिए?

क्या # लाइट सक्षम या अक्षम का उपयोग करके F # सीखना बेहतर है? मैं आखिरकार इसे सीखने की योजना बना रहा हूं, यह चालू हो गया है, लेकिन अगर मैं मूल भाषा को और जानने के बाद इसे लागू करने के लिए इसे शुरू करने के लिए बेहतर होता हूं तो यह उत्सुक हूं।

उत्तर

34

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

उदाहरण के लिए - का उपयोग कर #light

let add a b c = 
    let ab = a + b 
    printfn "%d" ab 
    c - ab 

गैर प्रकाश का उपयोग करके आप इस तरह एक ही बात लिख सकते हैं:

let add a b c = 
    let ab = a + b in // 'in' keyword specifies where the binding (value 'ab') is valid 
    printfn "%d" ab; // ';' is operator for sequencing expressions 
    c - ab;;   // ';;' is end of a function declaration 
उदाहरण के लिए

इससे पता चलता है कि आप की तरह कुछ नहीं लिख सकते हैं:

let doNothing a b = 
    let sum = a + b in 

अंत में एक 'इन' कीवर्ड है लेकिन फ़ंक्शन में कोई भी शरीर नहीं है (becau से 'इन' के बाद कोई अभिव्यक्ति नहीं है)। इस मामले में गैर-प्रकाश वाक्यविन्यास कभी-कभी यह समझने में दिलचस्प होता है कि क्या हो रहा है ... लेकिन जैसा कि आप देख सकते हैं, # लाइट कोड बहुत आसान है।

+1

इंडेंटेशन, या ब्रांड्स, या ... 'इन' या ';' के अलावा अन्य दायरे को संवाद करने के कई तरीके हैं या अन्य डेलीमीटर टोकन। प्रारंभिक-रीकोल-प्रतिक्रिया से पहले, अधिकांश लोगों को लगता है कि महत्वपूर्ण सफेद जगह बहुत अच्छी है। – Brian

+1

@ ब्रायन: जब तक आप अंधे न हों, उस स्थिति में जहां एक भाषा में प्रोग्रामिंग जहां व्हाइटस्पेस महत्वपूर्ण है, वह काफी कठिन है: http://stackoverflow.com/questions/118643/ –

+0

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

10

शायद "#light" भाषा की भावी रिलीज में डिफ़ॉल्ट हो जाएगा, इसलिए मैं इसे इस तरह से सीखूंगा। मुझे लगता है कि ओकैमल-संगतता को छोड़कर किसी भी व्यक्ति के लिए भारी सिंटैक्स का उपयोग करना दुर्लभ है (या तो क्रॉस-कंपाइलिंग, या कीबोर्ड पर बैठे मानव ओकैमल को जानते हैं और एफ # में एक आसान संक्रमण कर रहे हैं)।

5

क्योंकि मैंने ओकैमल पुस्तक से एफ # सीखा है (और मैं एफए कोड को संपादित करने के लिए Emacs के लिए ओकैम मोड का उपयोग करता हूं), मैं "भारी" वाक्यविन्यास का उपयोग करना पसंद करता हूं। मैंने # लाइट कोड के साथ काम किया है, और निश्चित रूप से अधिकांश एफ # उदाहरण प्रकाश वाक्यविन्यास का उपयोग करके लिखे गए हैं, इसलिए कुछ सामान्य परिचितता उपयोगी है। उस ने कहा, यह दूसरी तरफ से भारी से हल्के से स्विच करना थोड़ा आसान है, इसलिए भारी वाक्यविन्यास का उपयोग करके इसे सीखना निश्चित रूप से बुरा विचार नहीं है।

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

1

यदि मुझे सही याद है, तो "विशेषज्ञ सी #" पुस्तक का उल्लेख है कि # लाइट डिफ़ॉल्ट होगा जब F # जहाजों और गैर-प्रकाश वाक्यविन्यास केवल संगतता के लिए है।

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