Skip to content

Instantly share code, notes, and snippets.

@thelff
thelff / GBProcess.hs
Created April 15, 2012 23:42
threaded version of process conduit
{-# OPTIONS -Wall #-}
import Control.Monad (when,forever)
import Control.Monad.Trans
import Control.Monad.Trans.Resource
import qualified Data.ByteString as B
import Data.ByteString (ByteString)
import Data.Conduit
import qualified Data.Conduit.List as CL
import qualified Data.Conduit.Binary as CB
@thelff
thelff / sinkforks3.hs
Created March 26, 2012 02:22
sinkfork' and sinkforks
-- CL.sourceList [1..10] $$ sinkFork' (CL.consume) (CL.isolate 0 =$ CL.consume)
-- ([1],[])
{-# LANGUAGE ScopedTypeVariables #-}
import Data.Conduit
import qualified Data.Conduit.List as CL
import Control.Applicative ((<$>), (<*>), Applicative, pure, (<|>))
import Data.Functor.Identity (runIdentity)
import Debug.Trace
sinkFork :: (Applicative m, Monad m) => Sink a m b -> Sink a m c -> Sink a m (b, c)
@thelff
thelff / netproxy6.hs
Created March 10, 2012 19:53
network-conduit hangs in clientSrc $$ serverSink?
{-# LANGUAGE ScopedTypeVariables #-}
{-# OPTIONS -Wall #-}
import Data.Conduit
import Data.Conduit.Network
import Control.Monad.IO.Class (liftIO)
import Control.Concurrent.Lifted (fork,threadDelay)
import Network (withSocketsDo)
import qualified Control.Exception.Lifted as EL
import Control.Monad.Trans.Resource
@thelff
thelff / netproxy4.hs
Created March 10, 2012 05:26
network-conduit on windows expected "END serverSrc clientSink"
{-# OPTIONS -Wall #-}
import Data.Conduit
import Data.Conduit.Network
import Control.Monad.IO.Class (liftIO)
import Control.Concurrent.Lifted (fork)
import Network (withSocketsDo)
main::IO ()
main =
liftIO $ withSocketsDo $ runTCPClient (ClientSettings 5000 "127.0.0.1") $ \serverSrc serverSink -> do