@@ -10,6 +10,7 @@ import Data.IORef (IORef, newIORef, writeIORef)
1010import System.IO.Unsafe (unsafePerformIO)
1111
1212import qualified Asyncly as A
13+import qualified Conduit.Simple as S
1314import qualified Control.Monad.Logic as LG
1415import qualified Data.Machine as M
1516import qualified Transient.Internals as T
@@ -32,6 +33,7 @@ main = do
3233 , bench "transient-nil" $ nfIO transient_nil
3334 , bench "logict" $ nfIO logict_basic
3435 , bench "list-t" $ nfIO list_t_basic
36+ , bench "simple-conduit" $ nfIO simple_conduit_basic
3537 , bench "machines" $ nfIO machines_basic
3638 ]
3739 ]
@@ -166,6 +168,18 @@ logict_basic = do
166168 assert (Prelude.length xs == 49900) $
167169 return (Prelude.length xs)
168170
171+simple_conduit_basic :: IO Int
172+simple_conduit_basic = do
173+ xs <- S.sourceList [1..100000]
174+ S.$= S.filterC even
175+ S.$= S.mapC ((+1) :: Int -> Int)
176+ S.$= S.dropC 100
177+ S.$= S.mapC ((+1) :: Int -> Int)
178+ S.$= S.filterC (\x -> x `mod` 2 == 0)
179+ S.$$ S.sinkList
180+ assert (Prelude.length xs == 49900) $
181+ return (Prelude.length (xs :: [Int]))
182+
169183machines_basic :: IO Int
170184machines_basic = do
171185 xs <- M.runT $ M.source [1..100000]