wiem, żeWyjście cicho (bez wyjątku) Haskell
exitWith ExitSuccess
zamyka program, ale wyprowadza
*** Exception: ExitSuccess
Ja chce wiedzieć, czy istnieje sposób, aby wyjść bez wpisywanie czegokolwiek na ekranie?
wiem, żeWyjście cicho (bez wyjątku) Haskell
exitWith ExitSuccess
zamyka program, ale wyprowadza
*** Exception: ExitSuccess
Ja chce wiedzieć, czy istnieje sposób, aby wyjść bez wpisywanie czegokolwiek na ekranie?
Poszerzenie powyższych komentarzy tutaj (Kredyty dla Reida, Bakuriu i Jeffreya). Jest wysoce prawdopodobne, że realizują następujący program w ghci
:
import System.Exit
main :: IO()
main = exitWith ExitSuccess
Teraz w terminalu:
$ ghci
λ> :load crash.hs -- crash.hs is the filename
λ> main
*** Exception: ExitSuccess
Zauważ, że ghci
i ghc
są różne. ghci
służy jako REPL dla Haskell. Powyższy kod, gdy kompilowany i wykonywany jak następuje nie będzie produkować dowolną wiadomość:
$ ghc -o crash crash.hs
$ ./crash
Należy pamiętać, że REPL jest wywoływana przez program o nazwie ghci
. Aby skompilować i utworzyć plik wykonywalny, należy użyć pliku wykonywalnego o nazwie ghc
.
Więc powinienem po prostu zignorować wyjście "*** Exception: ExitSuccess", które ghci produkuje i kontynuuje z kodem? – Ali
@Ali Tak, możesz to zignorować w 'ghci'. I tak nie ma to znaczenia. Jedyne, co musisz się martwić, to kod zakończenia procesu. A to jest "0" zgodnie z oczekiwaniami. – Sibi
Dziękuję. Przyjąłem twoją odpowiedź, która jest dodatkiem trzech komentarzy wcześniej. – Ali
Nie należy drukować tego, co dokładnie robisz? –
Czy wykonujesz ten kod w ghci? Kiedy * skompiluję * kod, to go nie drukuje, ale używając ghci pokazuje błąd. Wierzę, że to dlatego, że ghci dodaje niestandardowy moduł obsługi wyjątków (w rzeczywistości wcale się nie kończy!). – Bakuriu
Używam platformy Haskell, która, jak sądzę, jest wykonywana w ghci. Oto fragment kodu: jeśli opt == 3, to wyjdź z ExitSuccess jeszcze ... – Ali