在GHCi中,我可以使用前一个表达式的结果吗?

Dre*_*rew 10 haskell ghci

我正在GHCi做一些实验,我正在尝试调整中等长时间(5分钟)的操作.结果开始中途打印,我经常可以告诉我的算法在1分钟或更短的时间后没有正确调整,所以我取消了操作.但是当我找到结果时,我想让它继续到最后,然后再使用它.但是,如果我在启动时分配它,我就无法看到它的处理过程.有什么方法可以访问输入GHCi的前一个表达式的结果吗?

Dan*_*zer 21

GHCi具有it用于此目的的特殊变量.

Prelude> 1
  1
Prelude> it
  1
Run Code Online (Sandbox Code Playgroud)

正如GHCi文档中所解释的那样,其原因在于非IO表达式的行为与此类似

someExpr ==> let it = someExpr
             print it
Run Code Online (Sandbox Code Playgroud)

如果someExpr是IO那么我们就有

it <- someExpr
print it
Run Code Online (Sandbox Code Playgroud)

所以it应该始终是您之前表达的结果.