Haskell 如何在ghci'中编辑前一行;什么是多行模式?

Haskell 如何在ghci'中编辑前一行;什么是多行模式?,haskell,ghci,Haskell,Ghci,使用ghci,我有时会使用多行模式输入定义(如中所述) 比如说, > :{ Prelude| sumToN :: (Eq a, Num a) => a -> a Prelude| sumToN n Prelude| | signum n /= 1 = 0 Prelude| | otherwise = 1 + sumToN (n-1) Prelude| :} > 当使用这种多行输入模式时,我偶尔会意识到我在前一行的输入中犯了错误。例如,在这段代码中,我无意中键入了

使用
ghci
,我有时会使用多行模式输入定义(如中所述)

比如说,

> :{
Prelude| sumToN :: (Eq a, Num a) => a -> a
Prelude| sumToN n
Prelude|   | signum n /= 1 = 0
Prelude|   | otherwise = 1 + sumToN (n-1)
Prelude| :}
>
当使用这种多行输入模式时,我偶尔会意识到我在前一行的输入中犯了错误。例如,在这段代码中,我无意中键入了
A
,而不是
A

> :{
Prelude| sumToN :: (Eq a, Num a) => a -> A
Prelude|
要更正错误,我需要编辑前一行。但是,我找不到任何方法返回并编辑前一行。相反,我将退出多行模式并重新开始,必要时重复,直到我逐行键入完整的定义而没有错误为止

有没有办法在
ghci的多行模式下编辑前一行而不必再次键入所有行?没有。ghci使用这种方法,它只在每行的基础上工作(并且不像GNU Bash那样提供
C-x C-e
)。基本上,GHCi只是通过使用


因此,
:{
:}
只需获取代码,在行之间添加
“\n”
,然后“通过解释器运行”。不幸的是,没有可以编辑的行缓冲区。你所能做的就是用
C-C
丢弃行,然后再试一次。

你不能-只需将代码键入文件并加载该文件。我希望多行模式进入真正的编辑器模式,其中1)你仍然可以看到上面的行,2)你可以像普通编辑器一样在屏幕底部自由移动。唉,事实并非如此。