使用emacs shell
缓冲区时,control-d
按键不会从ghci
REPL退出,但会退出python
REPL。而不是退出,gchi
报告字符' \ EOT' 中的词汇错误。
如何让control-d
正确退出emacs shell中的ghci
REPL?另外,为什么ghci
的工作方式与python
不同?
(是的,control-d
在常规控制台窗口中退出ghci
,而不是针对emacs shell
。)
在下面的示例中,我尝试了输入control-d
的两种变体。首先,我尝试了仅从control-d
运行comint-delchar-or-maybe-eof
的{{1}}。然后我尝试shell-mode-map
序列显式插入control-q control-d
字符,然后显示为ASCII字符4,emacs显示为" ^ D"。 (但是,如果将实际字符4粘贴到StackOverflow文本格式中,则会显示通用box character)。这两种变体都在control-d
中失败。
首先,ghci
ghci
接下来,$ ghci
GHCi, version 7.6.3: http://www.haskell.org/ghc/ :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Prelude>
<interactive>:1:1: lexical error at character '\EOT'
Prelude> ^D
<interactive>:2:1: lexical error at character '\EOT'
Prelude> :quit
Leaving GHCi.
REPL的期望行为:
python
更新
我已经安装了最新的Haskell并且仍然有同样的问题......现在使用Haskell 8.2.1:
$ python
Python 2.7.6 (default, Oct 26 2016, 20:30:19)
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
$ python
Python 2.7.6 (default, Oct 26 2016, 20:30:19)
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> ^D
$ $