[Haskell-cafe] some question about conduit usage

Alexander V Vershilov alexander.vershilov at gmail.com
Fri Feb 10 15:26:26 CET 2012


Hello, cafe!

I have somq questions about proper conduit usage in some usecases,
I can't find a good way to solve this problems

1). adding additional source to conduit processing [1]
Sometimes I want to run a Source and send use it to produce output
e.g.
have something like: 

> runSource :: ResourceT m => a -> Source m b
> runSource = undefined
>
> test1 :: ResourceT m => Conduit a m b
> test1 = Conduit push close
>   where
>     push = runSource
>     close = undefined
> -- In my first problem I've got 
> -- push i = case i of Left _ -> oneValue ; Right -> runSource
> -- but it can be solved with oneValue = sourceList [oneValue]

2). pushing data back [1]

e.g. I have 
> test2 :: ResourceT Conduit ByteString m b
> test2 = Conduit push close
>   where
>     conduit i = let (item,lft) = parse i
>                 in -- I want to send lft back to test2 and 
>                    -- process item
> -- in the other case I want to be able to send data back to
> -- previous or arbitrary level, e.g.
> test1 $= test2 $= test3
>           ^--------| (<<<=) lft

3). split stream to send it to different Sinks, e.g.
> sendToAll test3 [sink1,sink2,sink3]

4). send additional data from the other place, e.g.
> src $= handle $$ snk
> --  state -^
> -- I want to send message into handle to change it's state
> -- It can be done with stm-conduit and Either (Left for commands
> -- and Right for data), but it seems its overkill


I will be apprecated, if smb has any idea how to implement it correnly,
or why I shouldn't implement it at all.

[1] 
http://stackoverflow.com/questions/9226780/how-to-add-a-new-source-inside-a-conduit-haskell
--
Regards,
  Alexander V Vershilov
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 490 bytes
Desc: Digital signature
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20120210/be5410ea/attachment.pgp>


More information about the Haskell-Cafe mailing list