पिछले प्रश्न (Working with heterogenous data in a statically typed language) में, मैंने पूछा कि एफ # डेटा विश्लेषण में मानक कार्यों को कैसे प्रबंधित करता है, जैसे एक untyped CSV फ़ाइल में हेरफेर करना। गतिशील भाषाओं की तरहएफ # प्रकार प्रदाता और डेटा प्रोसेसिंग
data = load('income.csv')
data.log_income = log(income)
एफ # में बुनियादी कार्यों में उत्कृष्टता, सबसे खूबसूरत दृष्टिकोण प्रश्न चिह्न (?) ऑपरेटर हो रहा है। दुर्भाग्यवश इस प्रक्रिया में हम स्थिर टाइपिंग खो देते हैं और अभी भी यहां और वहां टाइप एनोटेशन की आवश्यकता है।
एफ # की सबसे रोमांचक भविष्य सुविधा में से एक Type Providers है। प्रकार की सुरक्षा की न्यूनतम हानि के साथ, एक सीएसवी प्रकार प्रदाता फ़ाइल की गतिशील रूप से जांच करके प्रकार प्रदान कर सकता है।
लेकिन डेटा विश्लेषण आमतौर पर वहां नहीं रुकता है। हम अक्सर संचालन की पाइपलाइन के माध्यम से डेटा को बदलते हैं और नए डेटासेट बनाते हैं। मेरा सवाल यह है कि अगर हम अधिकतर डेटा में हेरफेर करते हैं तो प्रदाता सहायता कर सकते हैं? उदाहरण के लिए:
open CSV // Type provider
let data = CSV(file='income.csv') // Type provider magic (syntax?)
let log_income = log(data.income) // works!
यह काम करता है लेकिन वैश्विक नामस्थान को प्रदूषित करता है। एक नया चर बनाने के बजाय, कॉलम जोड़ने के बारे में सोचने के लिए अक्सर अधिक प्राकृतिक होता है। क्या करने का कोई तरीका है?
let data.logIncome = log(data.income) // won't work, sadly.
Do प्रकार प्रदाताओं (?) ऑपरेटर जब लक्ष्य नई व्युत्पन्न या साफ-डेटासेट पैदा कर रही है का उपयोग कर से बचने के प्रदान करते हैं?
शायद की तरह कुछ:
let newdata = colBind data {logIncome = log(data.income)} // ugly, does it work?
अन्य विचार?