我正在玩导管库,并编写了一段示例代码,用于在两个数字(2 和 3)出现在序列中时提取它们。以下是我的代码:
import Data.Conduit
import qualified Data.Conduit.List as CL
source = CL.sourceList [1,2,3,4,5,2,3] :: Source IO Int
-- Extract the consequent 2 and 3 number
extract23 :: Conduit Int IO Int
extract23 = do
a <- await
b <- await
case (a,b) of
(Just a,Just b) ->
if a == 2 && b == 3
then do yield a
yield b
extract23
else extract23
_ -> return ()
conduit1 :: Conduit Int IO String
conduit1 = CL.map show
sink1 :: Sink String IO ()
sink1 = CL.mapM_ putStrLn
main :: IO ()
main = source $= (extract23 =$= conduit1) $$ sink1
但是当我执行该main
函数时,我没有得到任何输出。我所期望的实际上是这样的:
2
3
2
3
知道我做错了什么吗?