是否可以在完全评估表达式时打印跟踪消息?

时间:2015-10-09 20:32:14

标签: haskell

在haskell中,可以使用trace -

在表达式评估的开始时打印跟踪消息。
let myExpr = trace "myExpr!" . my . super . complicated $ expr

但是,我还没有找到在评估的 end 上打印此类消息的方法,也就是此myExpr不再需要进一步评估的时间。

有可能吗?或者它甚至有意义吗?在许多情况下,这可能会派上用场。例如,我想知道什么时候 - 如果有的话 - 一个昂贵的列表被完全评估。

另一个例子是当我使用parallel包时,我想跟踪每个线程的结束:

[expr1, expr2, ..., expr10] `using` parlist rdeepseq

我想打印调试信息,如:

expr1 started ...
expr2 started ...
...
expr10 started ...
expr1 finished ...
expr2 finished ...
...
expr10 finished ...

0 个答案:

没有答案