微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 repl 中跟踪递归 PureScript 函数的值?

如何解决如何在 repl 中跟踪递归 PureScript 函数的值?

有了这个 Main.purs(不包括进口):

main :: Effect Unit
main = pure foo

foo :: Unit
foo = trace "foo" (\_ -> unit)

这对 pulp replpulp run 都按预期工作:

> import Main
> foo
'foo'
unit

> :q
See ya!
$ pulp run
* Building project in ...
* Build successful.
'foo'
$ 

但是使用这个 Main.purs 我得到了不同的结果 pulp replpulp run

main :: Effect Unit
main = pure $ bar unit

bar :: Unit -> Unit
bar _ = trace "bar" (\_ -> bar unit)

pulp repl

> import Main
> bar unit
console.js:168
    if (isstackOverflowError(e))
        ^

pulp run

$ pulp run
* Building project in ...
* Build successful.
'bar'
'bar'
... omitted ...
'bar'
'bar'
'bar'
console.js:168
    if (isstackOverflowError(e))
        ^

我还发现了这种可能相关也可能不相关的奇怪行为:

Main.purs

main :: Effect Unit
main = pure unit

-- foo is dead code
foo :: Unit
foo = trace "foo" (\_ -> unit)

外壳:

$ pulp run
* Building project in ...
* Build successful.
'foo'

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。