在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 ...