Here is my attempt: https://gist.github.com/danidiaz/a93e6d247c4c81ef128e
I didn't manage to put everything in a single pipeline... I used two independent pipelines that communicate using an MVar. On Thursday, October 15, 2015 at 12:58:00 AM UTC+2, Andrea Corradi wrote: > > I wrote an example using directly the handlers, I would like to use > Pipe.Cliff that manage the lower part for me > and use directly pipes instead of the Handle. > In this example the client send 'command' to cat and output the response. > > Does this seams reasonable? > > -- CODE -- > {-# LANGUAGE OverloadedStrings #-} > import Pipes > import Pipes.Core > import Control.Monad (unless) > import System.Process > import qualified System.IO as IO > > createServer :: MonadIO m => IO.Handle -> IO.Handle -> String -> Server > String String m () > createServer hin hout input = do > liftIO $ IO.hPutStrLn hin input > eof <- liftIO $ IO.hIsEOF hout > unless eof $ do > output <- liftIO $ IO.hGetLine hout > input' <- respond output > createServer hin hout input' > > client :: MonadIO m => Client String String m () > client = do > reply <- request "Hello" > liftIO $ IO.putStrLn $ "The reply is: " ++ reply > reply <- request "World" > liftIO $ IO.putStrLn $ "The reply is: " ++ reply > > main = do > (Just hin, Just hout, _, ph) <- > createProcess (proc "cat" []){ std_in = CreatePipe, std_out = > CreatePipe } > IO.hSetBuffering hin IO.NoBuffering > runEffect $ (createServer hin hout) +>> client > IO.hClose hin > System.Process.waitForProcess ph > -- You received this message because you are subscribed to the Google Groups "Haskell Pipes" group. To unsubscribe from this group and stop receiving emails from it, send an email to haskell-pipes+unsubscr...@googlegroups.com. To post to this group, send email to haskell-pipes@googlegroups.com.