You can build this up using the >=< operator[1] in stm-conduit, something
like:
eitherSrc :: MonadResourceBase m
=> Source (ResourceT m) a -> Source (ResourceT m) b -> Source
(ResourceT m) (Either a b)
eitherSrc src1 src2 = do
join $ lift $ Data.Conduit.mapOutput Left src1 >=<
Data.Conduit.mapOutput Right src2
I think this can be generalized to work with more base monads with some
tweaks to (>=<).
[1]
http://haddocks.fpcomplete.com/fp/7.4.2/20130704-120/stm-conduit/Data-Conduit-TMChan.html#v:-62--61--60-
On Fri, Aug 23, 2013 at 11:32 AM, Erik de Castro Lopo
<[email protected]>wrote:
> Hi all
>
> Using the Conduit library is it possible to write the function:
>
> eitherSrc :: MonadResource m
> => Source m a -> Source m b -> Source m (Either a b)
>
> which combines two sources into new output source such that data being
> produced aysnchronously by the original two sources will be returned
> as either a Left or Right of tne new source?
>
> If so, how?
>
> Cheers,
> Erik
> --
> ----------------------------------------------------------------------
> Erik de Castro Lopo
> http://www.mega-nerd.com/
>
> _______________________________________________
> Haskell-Cafe mailing list
> [email protected]
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe