首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GHCI断点故障

GHCI断点故障
EN

Stack Overflow用户
提问于 2015-05-02 15:05:29
回答 2查看 217关注 0票数 3

下面是一个玩具函数,定义在一个文件中,名为test.hs:

代码语言:javascript
复制
x a b c = do
  putStrLn $ show a
  return a

当然,您可以将其导入GHCI并设置断点:

代码语言:javascript
复制
λ :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。

EN

回答 2

Stack Overflow用户

发布于 2015-05-02 15:59:10

GHC user's guide

GHCi已经为断点所在表达式的自由variables6提供了绑定...

6我们最初为作用域中的所有变量提供绑定,而不仅仅是表达式的自由变量,但发现这对性能有很大影响,因此当前仅限制自由变量。

票数 3
EN

Stack Overflow用户

发布于 2015-05-02 15:06:42

我发现了一个老生常谈的解决办法。如果重新定义函数x,如下所示:

代码语言:javascript
复制
x a b c = do
    return a; return b; return c;
    putStrLn $ show a
    return a

然后必须调用:step,然后可以检查b和c:

代码语言:javascript
复制
λ :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

然而,如果有一种方法可以在不重新定义函数的情况下做到这一点,那就太好了。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29999476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档