起動すると
ghci> last [0..]
Ctrl + Cで中断できます。
しかしながら
ghci> last (repeat 0)
ctrl + Cで中止することはできません。 GHCIは静かにキーストロークを無視します。
GHCIでこのコマンドを中止するにはどうすればよいですか?バグですか?
(警告レクター:私はLinuxを使用しており、urxvtまたはgnome-terminalでzshを実行しています。別のオペレーティングシステム、ターミナル、またはシェルを使用している場合は、動作が異なる可能性があります。)
私が通常これを処理する方法は、Ctrl + Z(バックグラウンドに置き、副作用として実行を完全に一時停止します)を押してから、ジョブを強制終了することです。通常、これはkill %1
ですが、jobs
を実行して再確認することもできます。
新しい端末を起動してkillall -9 ghci
のようなことを行うこともできますが、これにははるかに高いリソースコストがかかります。いくつかの新しいプロセスを生成し、X接続を開き、端末が初期化するときに行うことをすべて実行します。シェルがそれ自体を初期化するときなど、シェルが行うことは何でもします。あなたが状況にある場合、私はしばしば自分自身を見つけます-ghciは狂ったように交換しています-それはghciに物事を台無しにするためのより多くの時間を与えます。
Ctrl+Z
はシェルを離れているようですが、プロセスを完全に終了するわけではありません。
例えば
$ ghci
GHCi, version 7.10.3: http://www.haskell.org/ghc/ :? for help
Prelude>
[4]+ Stopped ghci
$ ps
PID TTY TIME CMD
3160 pts/1 00:00:00 bash
3554 pts/1 00:00:21 emacs
5602 pts/1 00:00:00 ghc
5693 pts/1 00:00:00 ps
ただし、Ctrl+D
を実行すると
$ ghci
GHCi, version 7.10.3: http://www.haskell.org/ghc/ :? for help
Prelude>
Leaving GHCi.
$ ps
PID TTY TIME CMD
3160 pts/1 00:00:00 bash
3554 pts/1 00:00:21 emacs
5870 pts/1 00:00:00 ps
したがって、haskell-Shell
を閉じる適切な方法は、Ctrl+D
を押すことです。
注:Linuxでテスト済み(Ubuntu 16.04 LTS)