2015-04-20 9 views
9

मुझे पता है किबाहर निकलें चुपचाप (बिना किसी अपवाद) Haskell

exitWith ExitSuccess 

कार्यक्रम बाहर निकल जाता है, लेकिन यह

*** Exception: ExitSuccess 

मैं अगर वहाँ बाहर निकलने के लिए रास्ता नहीं है जानने की चाह रहा आउटपुट के बिना outputting कुछ भी स्क्रीन पर?

+2

इसे प्रिंट नहीं करना चाहिए, आप वास्तव में क्या कर रहे हैं? –

+0

क्या आप ghci में उस कोड को निष्पादित कर रहे हैं? जब मैं * संकलित * कोड करता हूं तो यह प्रिंट नहीं करता है, लेकिन ghci का उपयोग करके यह त्रुटि दिखाता है। मेरा मानना ​​है कि ऐसा इसलिए है क्योंकि ghci एक कस्टम अपवाद हैंडलर जोड़ता है (वास्तव में यह बिल्कुल बाहर नहीं निकलता है!) – Bakuriu

+0

मैं हास्केल प्लेटफ़ॉर्म का उपयोग कर रहा हूं, जिसे मैं ghci में निष्पादित करता हूं। यहां मेरे कोड का एक स्निपेट है: यदि opt == 3 बाहर निकलें तो बाहर निकलें और बाहर निकलें ... – Ali

उत्तर

8

उपरोक्त टिप्पणियों का विस्तार (रीड, बाकुरी और जेफरी के क्रेडिट)। टर्मिनल में अब

import System.Exit 

main :: IO() 
main = exitWith ExitSuccess 

:: यह अत्यधिक संभावना है कि आप ghci में निम्नलिखित कार्यक्रम को क्रियान्वित करने कर रहे हैं

$ ghci 
λ> :load crash.hs -- crash.hs is the filename 
λ> main 
*** Exception: ExitSuccess 

ध्यान दें कि ghci और ghc अलग हैं। ghci का उपयोग हास्केल के लिए एक आरपीएल के रूप में किया जाता है। उपरोक्त कोड जब संकलित और मार डाला तरह निम्नलिखित किसी भी संदेश का उत्पादन नहीं होगा:

$ ghc -o crash crash.hs 
$ ./crash 

ध्यान दें कि आरईपीएल ghci नामित कार्यक्रम के माध्यम से शुरू हो जाती है। एक निष्पादन योग्य संकलन और उत्पादन के लिए, आपको ghc नामक निष्पादन योग्य का उपयोग करना होगा।

+0

में प्रोग्राम चलाता हूं तो क्या मुझे सिर्फ "*** अपवाद: ExitSuccess" आउटपुट को अनदेखा करना चाहिए जो ghci उत्पन्न करता है और कोड के साथ जारी रहता है? – Ali

+0

@ एली हां, आप इसे 'ghci' में अनदेखा कर सकते हैं। इससे कोई फर्क नहीं पड़ता। आपको चिंता करने की ज़रूरत है प्रक्रिया की निकास स्थिति है। और यह अपेक्षित के रूप में '0' है। – Sibi

+0

धन्यवाद। मैंने आपका जवाब स्वीकार कर लिया है, जो पहले तीन टिप्पणियों का एक जोड़ा है। – Ali

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