I can't give you a definite answer.  However, I guess that's because
the monad sequencing (i.e. where >>= of your monad is called) is
inside the 'pipe' function [1] (i.e., $$, $=, =$), the function that
connects pipes and runs them.  'pipe' needs to be able to interleave
lifted actions between both upstream and downstream pipes, and for
that they need to live on the same monad.  What you want is somehow
having upstream and downstream pipes on different monads.

HTH,

[1] 
http://hackage.haskell.org/packages/archive/conduit/0.5.2.3/doc/html/src/Data-Conduit-Internal.html#pipe

-- 
Felipe.

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to