如何在 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 (将#修改为@)