मेरे पास FileInfo का अनुक्रम है, लेकिन मुझे केवल उनके स्ट्रिंग नामों की परवाह है, इसलिए मुझे स्ट्रिंग का अनुक्रम चाहिए। पहले तो मुझे कुछ इस तरह की कोशिश की:एफ # का प्रकार अनुमान क्यों संभाल नहीं सकता है?
Seq.map (fun fi -> fi.Name) fis
लेकिन किसी कारण से, एफ # के प्रकार निष्कर्ष काफी अच्छा यह अनुमति देने के लिए नहीं है, और बनाया मुझे स्पष्ट रूप से एक प्रकार को "इंटरनेट" दे:
Seq.map (fun (fi : FileInfo) -> fi.Name) fis
इस एनोटेशन की आवश्यकता क्यों है? यदि यह ज्ञात है कि fis : seq<FileInfo>
और Seq.map : ('a -> 'b) -> seq<'a> -> seq<'b>
, तो यह अनुमान नहीं लगाया जाना चाहिए कि लैम्ब्डा अभिव्यक्ति का प्रकार FileInfo -> 'b
है, और फिर fi.Name : string
से, और अनुमान लगाएं कि इसका प्रकार FileInfo -> string
है?
मुझे आशा है कि वे टाइप अनुमान को और अधिक मजबूत बना देंगे। मैंने पहले ही कुछ मामलों को मारा है जहां मुझे कक्षा में विधियों को पुन: व्यवस्थित करना था या मुझे बहुत सामान्य प्रकार की त्रुटियां मिलेंगी। – gradbot
इसके लायक होने के लिए, इस ब्लॉग पोस्ट और इसकी कुछ टिप्पणियों में एफ 2 की कुछ शक्तियों और कमजोरियों के प्रकार के उपयोगी प्रकार में उपयोगी स्पष्टीकरण है: http://neilmitchell.blogspot.com/2008/12/f-from-haskell- perspective.html – Juliet