1

管道教程在他们的文档中提到了这一点:

如果你牺牲 Effects,你会得到 Haskell 的纯和惰性列表,你可以在恒定空间中使用可组合函数对其进行转换,但没有交错效果。

如果你牺牲了 Streaming,你会得到 mapM、forM 和“ListT done wrong”,它们是可组合且有效的,但在整个列表首先被处理并加载到内存之前不会返回单个结果。

但并不Streaming意味着交错效应?当你是时Streaming,你实际上是一个块一个块地消耗。那么,在逐块消费的同时,效果不是交错的吗?

4

1 回答 1

2

流确实意味着交错的效果。您引用的文字没有另外说明。

解释管道文档:

  • 如果您没有效果,那么您只剩下惰性数据结构。它们组合得很好,但你不能做 IO(除了我们试图避免的惰性 IO)。
  • 如果您确实有效果但没有流式传输,那么您可以进行 IO 但直到最后才会得到结果。
于 2014-05-08T10:31:20.140 回答