@@ -67,6 +67,7 @@ module Streamly.Streams.StreamK.Type
6767 , yield
6868
6969 , nil
70+ , nilM
7071 , conjoin
7172 , serial
7273 , map
@@ -324,6 +325,19 @@ infixr 5 .:
324325nil :: IsStream t => t m a
325326nil = mkStream $ \_ _ _ stp -> stp
326327
328+-- | An empty stream producing a side effect.
329+--
330+-- @
331+-- > toList (nilM (print "nil"))
332+-- "nil"
333+-- []
334+-- @
335+--
336+-- /Internal/
337+{-# INLINE_NORMAL nilM #-}
338+nilM :: (IsStream t, Monad m) => m b -> t m a
339+nilM m = mkStream $ \_ _ _ stp -> m >> stp
340+
327341{-# INLINE_NORMAL yield #-}
328342yield :: IsStream t => a -> t m a
329343yield a = mkStream $ \_ _ single _ -> single a