![]() |
1
3
只是第一个词:
但是要注意:这依赖于一个称为“lazy io”的特性,它只与纯代码中的lazy技术有关。纯函数在默认情况下是懒惰的,您必须努力使其严格;IO在默认情况下是“严格IO”,您必须努力使其懒惰IO。一些库函数(尤其是
|
![]() |
2
3
从概念上讲,它只读取它需要的内容。但它可能使用缓冲区来实现这一点:
这表明(在Linux系统上)程序将自己分成多个线程,其中一个线程从stdin读取8kb数据,然后另一个线程输出第一个字。主要原因是反复阅读少量的内容是非常低效的。异步源(如终端和套接字)可能会产生较小的数据量,但:
在这种情况下,终端层在第一个换行符处完成了读取,即使缓冲区仍然是8kib大。因为这足够识别第一个单词的数据,所以不需要进一步读取。 |
![]() |
141592653 · GHCi未推断某些IO操作的实例 6 月前 |
![]() |
Enlico · 运行monad变压器堆产生的任何东西都不是==无? 6 月前 |
![]() |
The Oddler · TVar会阻止读取直到更改吗? 11 月前 |
![]() |
user20102550 · 如何在解析器中使用输入字符串 1 年前 |
![]() |
kesarling · 这个Haskell列表理解是如何评估的? 1 年前 |