2017-01-11 4 views
6

यह एफ # की पहली पंक्ति है जिसे मैंने लिखने की कोशिश की है, इसलिए क्षमा करें क्योंकि मुझे शायद खोज करने के लिए सही Google कीवर्ड नहीं पता हैं।एफ # फ़ंक्शन पैरामीटर डेटाटाइप

let sigmoid x deriv = if deriv then x * (1 - x) else 1/(1 + System.Math.Exp(-x)) 

यह मैं System.Math.Exp(-x) पर एक त्रुटि देता है::

The type 'float' does not match the type 'int' 

मुझे लगता है मैं संकलक उम्मीद कर रहा था इस समारोह पर प्रकार निष्कर्ष करने के लिए और

मैं बहुत की तरह एक समारोह को परिभाषित करने की कोशिश की एक फ्लोट के रूप में x परिभाषित करें। मुझे यहां क्या समझ नहीं आ रहा है? ,

let sigmoid x deriv = if deriv then x * (1 - x) else 1/(1 + System.Math.Exp(-x)) 

[<EntryPoint>] 
let main argv = 
    sigmoid 1.0 false |> printfn "%A" 
    0 
+1

कंपाइलर 'x' के रूप में' x' का अनुमान लगाता है, क्योंकि आपने इसे '1 - x' जैसी चीजों में उपयोग किया था। '1' हमेशा एक पूर्णांक होगा, और आप केवल अंकगणितीय अभिव्यक्तियों में अन्य पूर्णांक के साथ इसका उपयोग कर सकते हैं। आपका कोड संकलित करता है यदि आप '1' से' 1.0' के अपने सभी उपयोगों को बदलते हैं, जो इसे 'फ्लोट' बना देगा और 'x' को 'फ्लोट' के रूप में भी अनुमानित किया जाएगा। – TeaDrivenDev

+1

(यह सी # से अलग है, उदाहरण के लिए, जो आवश्यक होने पर प्रकारों को मजबूत करेगा और इस प्रकार एक ही अभिव्यक्ति में पूर्णांक और फ़्लोटिंग पॉइंट नंबरों को मिश्रण करने की अनुमति देगा।) – TeaDrivenDev

+0

@TeaDrivenDev Awesome! यह निश्चित रूप से मुद्दा था, और भविष्य में कुछ नया देखने के लिए। यदि आप एक उत्तर देना चाहते हैं तो मैं स्वीकार कर सकता हूं – darkpbj

उत्तर

6

संकलक xint के रूप में लाने का प्रयास है क्योंकि आप 1 - x जैसी चीजों में इसका इस्तेमाल किया:

यहाँ पूरी बात है कि मैं में प्लग करने के लिए कोशिश कर रहा हूँ है। एक साधारण 1हमेशा एक पूर्णांक हो, और आप केवल अंकगणितीय अभिव्यक्तियों में अन्य पूर्णांक के साथ इसका उपयोग कर सकते हैं। आपका कोड संकलित करता है यदि आप 1 से 1.0 के अपने सभी उपयोगों को बदलते हैं, जो इसे float बना देगा और float के रूप में अनुमानित होने के लिए x का कारण बन जाएगा।

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

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