haskell - Weird type signature while combining IO actions -
मेरे अपने मशीन पर निम्न कोड प्रिंट होता है:
$ ghc --version The Gloryious ग्लासगो हास्केल संकलन प्रणाली, संस्करण 7.6.3 $ रनहोस्केल क्यों एचआईएस [1,1,1] [2,2,2] लेकिन एफपी पूरा होने पर यह एक त्रुटि उत्पन्न करता है: (जब तक मैं GHC 7.8 पूर्वावलोकन , क्लोनिंग के लिए एलपीस) पर स्विच कर रहा हूं src / Main.hs@4: 7-4: 13 (मोनाद के लिए कोई उदाहरण (- (& gt; ) (आईओ इंट)) 'वापसी' के उपयोग से उत्पन्न हो सकता है संभावित सुधार: (Monad ((- & gt;) (IO Int) के लिए एक उदाहरण घोषणा जोड़ें)) अभिव्यक्ति में: वापसी 3 `अंक 'के लिए एक समीकरण में : Num = return 3 यहां कोड है मैं एक फ़ंक्शन बनाने की कोशिश कर रहा था जो एक आईओ एक्शन बार को IO Int कार्रवाई में दोहराता है मैंने देखा है कि जीएचसी ने num । आयात नियंत्रण के लिए एक अजीब प्रकार के हस्ताक्षर प्राप्त किए हैं। मौनद - अजीब प्रकार के हस्ताक्षर की सूचना, के लिए - ऐसा लगता है - कोई कारण नहीं: IO Int - & gt; Int संख्या = वापसी 3 प्रतिनिधि: IO Int - & gt; आईओ [इंट] प्रतिनिधि = संख्या> और gt; = प्रतिकृति एम प्रतिनिधि ': IO Int - & gt; IO [Int] rep '= do x और lt; - num replicateM x मुख्य :: IO () main = do print = & lt; & lt; प्रतिनिधि (वापसी 1) प्रिंट = & lt; & lt; प्रतिनिधि '(वापसी 2)
रिटर्न 3 :: आईओ इंट - & gt ; आईओ के साथ क्या करने के लिए आईटी कुछ भी नहीं है वास्तव में, आप लिख सकते हैं num :: a - & gt; इंट्यूम = रिटर्न 3 एक ही बात वापसी यहां (a - & gt;) मॉडाड का उपयोग करता है, जिसका परिभाषा return = const है। इसलिए प्रभावी रूप से आपने लिखा है num _ = 3 और IO कार्रवाई अभी दूर हो गई है। <पी> अब यह क्यों एफपी पूरा पर काम नहीं करता है: मोनाद (ए - & gt;) उदाहरण केवल जीएचसी -7.7 से आरंभ में शामिल किया गया है: < ब्लॉकक्ॉट> जीएचसीआई, संस्करण 7.6.2: एक:? मदद के लिए पैकेज लोड हो रहा है ... लिंकिंग ... पूरा किया हुआ है। पैकेज पूर्णांक -जीएमपी लोड करना ... लिंक करना ... किया। पैकेज बेस लोड हो रहा है ... लिंकिंग ... किया ।
प्रारंभ करें & gt; : मैं मोनाद
वर्ग मोनाद मी जहां एक (& gt; & gt; =) :: मी एक - & gt; (ए - & gt; एम बी) - & gt; मी बी
एक (& gt; & gt;) :: मी एक - & gt; मी बी - & gt; मी बी - वापसी :: ए - & gt; असफल :: स्ट्रिंग - & gt; मा
एक - परिभाषित 'जीएचसी .बेस' में - उदाहरण मोनद शायद - 'डेटा में परिभाषित। शायद'
उदाहरण मोनाद (या तो ई) - 'डेटा में परिभाषित। या तो'
उदाहरण मोनाद [] - `जीएचसी। बज़ 'में परिभाषित - उदाहरण मोनैड IO - परिभाषित' जीएचसी .बेस 'में - उदाहरण मोनाद ((- & gt;)) -` जीएचसी में परिभाषित । बेस '
प्रील्यूड & gt;
जबकि
जीएचसीआई, संस्करण 7.4.1: एक:? मदद के लिए - लोड हो रहा है पैकेज ghc-prim ... लिंकिंग ... done।
पैकेज पूर्णांक- gmp लोड हो रहा है ... लिंकिंग ... done।
पैकेज बेस लोड हो रहा है ... लिंकिंग ...: किया।
प्रस्तावना & gt; : मैं मोनाद
वर्ग मोनाद मी जहां एक (& gt; & gt; =) :: मी एक - & gt; (ए - & gt; एम बी) - & gt; मी बी
एक (& gt; & gt;) :: मी एक - & gt; मी बी - & gt; मी बी - वापसी :: ए - & gt; असफल :: स्ट्रिंग - & gt; मा
एक - परिभाषित 'जीएचसी .बेस' में - उदाहरण मोनद हो सकता है - 'डाटा में परिभाषित। शायद'
उदाहरण मोनाद [] - 'जीएचसी। बेस' में परिभाषित- उदाहरण मोनद आईओ - `जीएचसी। बज़ 'में परिभाषित
प्रील्यूड & gt;
इस आवृत्ति को पुराने संस्करणों में प्राप्त करने के लिए, आपको आयात नियंत्रण की आवश्यकता है। मानदंड । मुझे कौन सा लगता है नहीं आप वास्तव में क्या देख रहे हैं मुझे नहीं पता कि "आईओ एक्शन एक्शन आईओ इंट एक्शन" को दोहराता है, लेकिन मुझे लगता है कि ऐसा कुछ है IO a - & gt; IO Int - & gt; आईओ [ए] अगर ऐसा है तो इस हस्ताक्षर से शुरू करें जीएचसी शीर्ष-स्तरीय प्रकारों को निकालना न दें, यह बग-सुरक्षा प्रकार की प्रणाली को आपको देता है।
Comments
Post a Comment