【发布时间】:2011-07-30 07:20:27
【问题描述】:
我做了一个非常耗时的算法,结果是一个短字符串。当我尝试打印它(通过 putStrLn)时,它一个字符一个字符地出现在屏幕上。我确实理解为什么会发生这种情况,并且我尝试在实际打印之前强制评估字符串。
myPrint !str = putStrLn str
但这帮助很小。当我在调试中运行程序时,我注意到 !str 仅对第一个字符进行强制评估。
有谁知道这是为什么,以及如何处理?
【问题讨论】:
-
每字符打印有什么问题?如您所见,我喜欢这种方法,当程序评估您的东西时。
-
这将是一个工具,只是看起来有点丑。但出于调试目的,我完全同意,它可能很有用。
标签: haskell data-structures lazy-evaluation evaluation strictness