2011-10-19 14 views
23

क्या स्टेंडर्ड एफ # लाइब्रेरी में कोई विकल्प (शायद) wokflow (monad) है?क्या एफ # में मानक विकल्प वर्कफ़्लो है?

मुझे इस वर्कफ़्लो के एक दर्जन हाथ से बने कार्यान्वयन (1, 2) मिले हैं, लेकिन मैं वास्तव में गैर-मानक और मेरे प्रोजेक्ट में बहुत विश्वसनीय कोड नहीं पेश करना चाहता हूं। और Google और msdn के सभी कल्पनीय प्रश्नों ने मुझे कोई सुराग नहीं दिया जहां इसे ढूंढना है।

उत्तर

13

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

13

विकल्पों के लिए कोई मानक गणना निर्माता नहीं है, लेकिन अगर आपको आलस्य जैसी चीजों की आवश्यकता नहीं है (जैसा कि आपने लिंक किए गए उदाहरणों में जोड़ा है) कोड इतना सरल है कि इसका विश्वास करने का कोई कारण नहीं है (विशेष रूप से सुझाव दिया गया है मानक पुस्तकालय से Option.bind फ़ंक्शन)। यहां एक न्यूनतम न्यूनतम उदाहरण दिया गया है:

type OptionBuilder() = 
    member x.Bind(v,f) = Option.bind f v 
    member x.Return v = Some v 
    member x.ReturnFrom o = o 
    member x.Zero() = None 

let opt = OptionBuilder() 
+2

मुझे यह 'शून्य' विधि जोड़ने के लिए उपयोगी लगता है: 'सदस्य x.Zero() = none'। यह बिल्डर के निम्नलिखित उपयोग की अनुमति देता है: 'इसे ISNone = opt {अगर 2 + 2 = 5 दें तो वापस "असंभव हुआ है"} –

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