我有时会遇到这个错误,虽然不是所有的时间,但这让我发疯了 . 我不知道这是一个错误,还是有一些我不知道的行为或修复 .
我正在使用:{和:}输入一个多行命令,当我想结束命令时,有时候我会收到错误,如下所示:
*MyModule| :}
unknown command ':}'
use :? for help.
我认为它在97%的情况下都能正常工作,但有3%的时间我会遇到这种情况 .
据我所知,应该总是输入:}来关闭多行条目,如下所述:
http://www.haskell.org/ghc/docs/7.4.1/html/users_guide/interactive-evaluation.html
目前,我知道在发生这种情况时唯一可以解决这种情况的方法是ctrl D,它不幸地杀死了ghci .
答:这是一个错误还是有某种原因:}会突然变成“未知的命令”?
B.如果我遇到这种情况,有没有办法在不使用ctrl D的情况下恢复?无论我尝试多少次:},一旦我进入这个状态,它总会导致“未知命令”,尽管我期望这个命令能够关闭多行输入 .
就像它在问题中所说的那样,这是Arch Linux上的GHCi,版本7.6.3 .
2 回答
正如我在评论中已经提到的,这种行为的原因是当按下
Ctrl-C
时GHCi没有正确地重置提示 . 问题的根源可能在于以下代码(取自ghci-ng
):(见InteractiveUI.hs line 712)
如果
collectCommand
抛出UserInterrupt
,则重置promt的行将永远不会被执行 . 我将此代码更改为:哪个解决了这个问题 .
This is a known bug.一切正常,但ghci有时会在打印正常提示时继续打印多行提示 .