【问题标题】:Conduit weird behavior管道奇怪的行为
【发布时间】:2018-03-12 04:26:51
【问题描述】:

我是 Haskell Conduit 的新手,我正在学习如何使用它。我遇到了一个奇怪的行为。

在这里,我们有:

#!/usr/bin/env stack
-- stack --resolver lts-10.9 script

import Conduit

main :: IO ()
main = runConduit
  $ yieldMany [1..10::Int]
 .| do
      mapC id .| (await >>= maybe (return ()) leftover)
      printC
 .| do
      leftover "Hello There!"
      printC

结果是:

$ ./Example21.hs
"Hello There!"
2
3
4
5
6
7
8
9
10

我不明白为什么不打印1

【问题讨论】:

  • 注:在以后的问题中,请注意 Stack 的标签是 [haskell-stack],而不仅仅是 [stack](这是关于数据结构的)。我从这个问题中删除了标签,因为它并不真正涉及 Stack。
  • 谢谢。下次我会小心的:)

标签: haskell conduit


【解决方案1】:

这是剩菜的行为。 Leftovers 不能从.| fusion 运算符的外部传播。正如the Haddocks 所说:

从右导管返回的剩余数据将被丢弃。

如果您需要恢复剩余物,可以使用fusion with leftovers 函数。

【讨论】:

    猜你喜欢
    • 2019-09-16
    • 1970-01-01
    • 1970-01-01
    • 2020-01-01
    • 2021-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多