X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=examples%2Flines_url.hs;h=ebc04e5354e0cc86007d5398812732eeb2f9f23d;hb=HEAD;hp=b6766566277897cdce7a5736895b542e916e29f4;hpb=955edd331812d8638f57a23ddcc90194ad7002b7;p=github%2Ffretlink%2Ftext-pipes.git diff --git a/examples/lines_url.hs b/examples/lines_url.hs index b676656..ebc04e5 100644 --- a/examples/lines_url.hs +++ b/examples/lines_url.hs @@ -23,15 +23,17 @@ main = do -- "http://www.gutenberg.org/files/10/10-h/10-h.htm" withManager tlsManagerSettings $ \m -> withHTTP req m $ \resp -> void $ runEffect $ - number_lines_of (responseBody resp ^. utf8 . lines) >-> toHandle IO.stdout + number_lines_of (responseBody resp ^. utf8 . lines) >-> toHandle IO.stdout -number_lines_of :: Monad m => FreeT (Producer Text m) m bad -> Producer Text m bad +number_lines_of :: Monad m => FreeT (Producer Text m) m r -> Producer Text m r number_lines_of = number_loop (1 :: Int) where - number_loop n freeProducers = do - freeProducer <- lift $ runFreeT freeProducers - case freeProducer of - Pure badbytes -> do yield $ T.pack "\n" - return badbytes -- these could be inspected ... - Free p -> do yield $ T.pack ("\n" ++ show n ++ " ") - nextFreeProducers <- p - number_loop (n+1) nextFreeProducers + number_loop n free = do + fproducer <- lift $ runFreeT free + case fproducer of + Pure badbytes -> do + yield $ T.pack "\n" + return badbytes -- these could be inspected ... + Free p -> do + yield $ T.pack ("\n" ++ show n ++ " ") + next_free <- p + number_loop (n+1) next_free