सही जवाब वास्तव में निम्नलिखित:
https://fsharpforfunandprofit.com/posts/elevated-world/#apply
एक फिर कुछ कोड की जरूरत है इसके बारे में करने पर निर्भर करता निम्न उदाहरण:
module Option =
// The apply function for Options
let apply fOpt xOpt =
match fOpt,xOpt with
| Some f, Some x -> Some (f x)
| _ -> None
let (<!>) = Option.map
let (<*>) = Option.apply
let a = Some(4)
let b = Some(5)
let multiplication = (*)
//Some multiplication function applied on a and resulting function applied on b
let res1 = Some(multiplication) <*> a <*> b
let res2 = Some(*) <*> a <*> b
//Map a onto multiplication function and resulting function applied on b
let res3 = multiplication <!> a <*> b
let res4 = (*) <!> a <*> b
val res1 : int option = Some 20
val res2 : int option = Some 20
val res3 : int option = Some 20
val res4 : int option = Some 20
//The following is without any options to try to clarify the above
let op = (*) //multiplication
//let partialRes = (*) 4
let partialRes = op 4 //make function for multiplying param with 4
let fullres = partialRes 5 //use function for multiplying with 4
val op : (int -> int -> int)
val partialRes : (int -> int)
val fullres : int = 20
यह कह के लिए कारण यह है कि इसके बाद के संस्करण एक साथ में और Wlaschin क्या कॉल "ऊंचा दुनिया", या विकल्प में से बाहर काम कर सकते हैं है इस मामले में, और दोनों से सामान मिलाएं। एक प्रकार का। पूरी साइट या पुस्तक पढ़ें Wlaschin अच्छी माप के लिए लिखा है।
कोई फर्म एक विकल्प के रूप में कोई विकल्प लेने की आवश्यकता नहीं है और रैपिंग और अनचाहे को एक बार और सभी के लिए देखभाल की जा सकती है।
ऊपर कोड से पता चलता है (बेशर्म लिंक से चोरी हो, और कुछ हद तक फिर से लिखा), समारोह रिचर्ड की जरूरत है के रूप में:
Option.apply
हाँ प्रतीकों संभवतः भ्रमित, खासकर जब से हम गुणा बात कर रहे हैं या * यहाँ होगा, लेकिन मानचित्र के लिए ये प्रतीक <!> और लागू करें < *> कुछ हद तक 'मानक' हैं।
मुझे लगता है कि कोड को पढ़ने के तरीके के संबंध में कोड में टिप्पणियां कम या ज्यादा सही हैं।
और हाँ, मैं शायद मेरी शिक्षण शैलियों ;-)
स्रोत
2016-08-22 16:15:04
आह! मुझे पता था * कुछ होगा, धन्यवाद – Dutts