Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 防止功能打印到屏幕_Haskell_Ghci - Fatal编程技术网

Haskell 防止功能打印到屏幕

Haskell 防止功能打印到屏幕,haskell,ghci,Haskell,Ghci,我目前正在使用GHCI测量几个函数的运行时。由于这些函数产生了我不感兴趣的相当长的输出,我想知道是否有任何方法可以阻止这些输出显示在屏幕上,而只显示通过::set+s获得的运行时,我建议您使用它来测量运行时。它负责对(WH)NF的纯函数的结果进行评估,重复测试几次等 如果您想隐藏输出,同时仍保持对所有内容的求值,我建议您根据输出对代码进行参数化。例如,通过一个函数,或者简单地通过类型为String->IO()的函数。然后,您可以轻松地将输出重定向到文件,重定向到/dev/null,或者在后一种情

我目前正在使用GHCI测量几个函数的运行时。由于这些函数产生了我不感兴趣的相当长的输出,我想知道是否有任何方法可以阻止这些输出显示在屏幕上,而只显示通过::set+s获得的运行时,我建议您使用它来测量运行时。它负责对(WH)NF的纯函数的结果进行评估,重复测试几次等


如果您想隐藏输出,同时仍保持对所有内容的求值,我建议您根据输出对代码进行参数化。例如,通过一个函数,或者简单地通过类型为
String->IO()
的函数。然后,您可以轻松地将输出重定向到文件,重定向到
/dev/null
,或者在后一种情况下,甚至只需通过传递
evaluate来强制执行其计算。rnf

我假设这与您的不同?@FelixKling是的,我需要在两个单独的文件中记录完整的输出(函数输出+运行时)以及仅记录运行时。您可以在结果字符串上调用length或last或类似的内容,以确保对其进行完全计算,而不是打印。您还可以使用
Control.Exception.evaluate
Control.DeepSeq
@user2407038根据示例,
length
可能不会将其剪切,因为它将仅计算为WHNF。与
last
相同:它可以计算最后一个元素,但将其他元素保留在WNHF。我建议从
Control.DeepSeq
在列表上映射
force