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

时间:2013-06-06 06:35:01

标签: haskell ghci

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

1 个答案:

答案 0 :(得分:21)

为此目的,GHCi具有特殊变量it

Prelude> 1
  1
Prelude> it
  1

正如GHCi docs中所解释的那样,原因是非IO表达式的行为如此

someExpr ==> let it = someExpr
             print it

如果someExpr是IO,那么我们就有

it <- someExpr
print it

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