Haskell 防止功能打印到屏幕
我目前正在使用GHCI测量几个函数的运行时。由于这些函数产生了我不感兴趣的相当长的输出,我想知道是否有任何方法可以阻止这些输出显示在屏幕上,而只显示通过::set+s获得的运行时,我建议您使用它来测量运行时。它负责对(WH)NF的纯函数的结果进行评估,重复测试几次等Haskell 防止功能打印到屏幕,haskell,ghci,Haskell,Ghci,我目前正在使用GHCI测量几个函数的运行时。由于这些函数产生了我不感兴趣的相当长的输出,我想知道是否有任何方法可以阻止这些输出显示在屏幕上,而只显示通过::set+s获得的运行时,我建议您使用它来测量运行时。它负责对(WH)NF的纯函数的结果进行评估,重复测试几次等 如果您想隐藏输出,同时仍保持对所有内容的求值,我建议您根据输出对代码进行参数化。例如,通过一个函数,或者简单地通过类型为String->IO()的函数。然后,您可以轻松地将输出重定向到文件,重定向到/dev/null,或者在后一种情
如果您想隐藏输出,同时仍保持对所有内容的求值,我建议您根据输出对代码进行参数化。例如,通过一个函数,或者简单地通过类型为
String->IO()
的函数。然后,您可以轻松地将输出重定向到文件,重定向到/dev/null
,或者在后一种情况下,甚至只需通过传递evaluate来强制执行其计算。rnf
我假设这与您的不同?@FelixKling是的,我需要在两个单独的文件中记录完整的输出(函数输出+运行时)以及仅记录运行时。您可以在结果字符串上调用length或last或类似的内容,以确保对其进行完全计算,而不是打印。您还可以使用Control.Exception.evaluate
或Control.DeepSeq
@user2407038根据示例,length
可能不会将其剪切,因为它将仅计算为WHNF。与last
相同:它可以计算最后一个元素,但将其他元素保留在WNHF。我建议从Control.DeepSeq
在列表上映射force
。