@@ -9,6 +9,7 @@
99
1010import Prelude hiding (mapM)
1111
12+import Data.Function ((&))
1213import Streamly.Prelude
1314 ( SerialT, parallely, parallel, serially, maxBuffer, maxThreads)
1415
@@ -57,6 +58,14 @@ parAppMap src = S.drain $ S.map (+1) S.|$ src
5758parAppSum :: S.MonadAsync m => SerialT m Int -> m ()
5859parAppSum src = (S.sum S.|$. src) >>= \x -> seq x (return ())
5960
61+{-# INLINE (|&) #-}
62+(|&) :: S.MonadAsync m => SerialT m Int -> m ()
63+(|&) src = src S.|& S.map (+ 1) & S.drain
64+
65+{-# INLINE (|&.) #-}
66+(|&.) :: S.MonadAsync m => SerialT m Int -> m ()
67+(|&.) src = (src S.|&. S.sum) >>= \x -> seq x (return ())
68+
6069-------------------------------------------------------------------------------
6170-- Tapping
6271-------------------------------------------------------------------------------
@@ -79,6 +88,8 @@ o_1_space_merge_app_tap value =
7988 -- Parallel stages in a pipeline
8089 , benchIOSink value "parAppMap" parAppMap
8190 , benchIOSink value "parAppSum" parAppSum
91+ , benchIOSink value "(|&)" (|&)
92+ , benchIOSink value "(|&.)" (|&.)
8293 , benchIOSink value "tapAsync" (tapAsync 1)
8394 , benchIOSink value "tapAsyncS" (tapAsyncS 1)
8495 ]