这是一个玩具函数,在文件中定义,称之为test.hs:
x a b c = do
putStrLn $ show a
return a
当然可以将其导入GHCI并设置断点:
λ :load test.hs
[1 of 1] Compiling Main ( test.hs, interpreted )
Ok, modules loaded: Main.
λ :break x
Breakpoint 3 activated at test2.hs:(1,1)-(3,12)
λ x 1 2 3
Stopped at test2.hs:(1,1)-(3,12)
_result :: IO b = _
然而似乎没有办法检查参数b和c。
这有什么办法吗?我正在运行GHCi 7.8.4。
答案 0 :(得分:3)
GHCi为表达式的自由变量[6]提供了绑定 放置断点的地方......
[6]我们最初为范围内的所有变量提供了绑定 不仅仅是表达式的自由变量,而是发现了这一点 受影响的表现相当,因此目前的限制 只是自由变量。
答案 1 :(得分:2)
我找到了一个hacky解决方法。如果重新定义函数x,如下所示:
x a b c = do
return a; return b; return c;
putStrLn $ show a
return a
然后必须调用:step然后b和c可以被检查:
λ :break x
Breakpoint 4 activated at test2.hs:(1,1)-(4,12)
λ x 1 2 3
Stopped at test2.hs:(1,1)-(4,12)
_result :: IO b = _
λ :step
Stopped at test2.hs:(1,11)-(4,12)
_result :: IO Integer = _
a :: Integer = 1
b :: Integer = 2
c :: Integer = 3
如果有办法在没有重新定义函数的情况下执行此操作,那可能会很好。