拆分管道链

时间:2013-02-21 02:53:47

标签: haskell conduit

我有这个管道表达式有效:

main1 = runResourceT
       $ CB.sourceHandle stdin
      $$ CB.lines
      =$ Cl.concatMap matches
      =$ Cl.mapMaybe readDouble
      =$ Cl.map fst
      =$ Cl.map bucket
      =$ Cl.map (BS.pack . show)
      =$ Cl.map (\x -> x <> BS.pack "\n")
      =$ CB.sinkHandle stdout

我无法将其分成两部分,例如:

source = CB.sourceHandle stdin
  $$ CB.lines
  =$ Cl.concatMap matches
  =$ Cl.mapMaybe readDouble
  =$ Cl.map fst
  =$ Cl.map bucket

sink = Cl.map (BS.pack . show)
  =$ Cl.map (\x -> x <> BS.pack "\n")
  =$ CB.sinkHandle stdout

以便我可以使用:

runResourceT $ source =$ sink

或者其他......我从类型检查器中获得的错误信息有点难以理解。

1 个答案:

答案 0 :(得分:2)

source方面,将所有运算符替换为$=,即“使用管道融合源”运算符,即左融合。