@@ -103,6 +103,7 @@ module Streamly.Internal.Data.Stream.StreamD
103 , fromListM
103 , fromListM
104 , fromStreamK
104 , fromStreamK
105 , fromStreamD
105 , fromStreamD
106 , fromSVar
107 , fromSVar
108 -- * Elimination
109 -- * Elimination
@@ -333,6 +334,7 @@ import qualified Control.Monad.Reader as Reader
333import qualified Control.Monad.State.Strict as State
334import qualified Control.Monad.State.Strict as State
334import qualified Prelude
335import qualified Prelude
337+import Streamly.Internal.Mutable.Prim.Var (MonadMut, Prim, Var, readVar)
336import Streamly.Internal.Data.Atomics (atomicModifyIORefCAS_)
338import Streamly.Internal.Data.Atomics (atomicModifyIORefCAS_)
337import Streamly.Internal.Memory.Array.Types (Array(..))
339import Streamly.Internal.Memory.Array.Types (Array(..))
338import Streamly.Internal.Data.Fold.Types (Fold(..))
340import Streamly.Internal.Data.Fold.Types (Fold(..))
@@ -664,6 +666,13 @@ fromListM = Stream step
664toStreamD :: (K.IsStream t, Monad m) => t m a -> Stream m a
666toStreamD :: (K.IsStream t, Monad m) => t m a -> Stream m a
665toStreamD = fromStreamK . K.toStream
667toStreamD = fromStreamK . K.toStream
669+{-# INLINE_NORMAL fromPrimVar #-}
670+fromPrimVar :: (MonadMut m, Prim a) => Var m a -> Stream m a
671+fromPrimVar var = Stream step ()
673+ {-# INLINE_LATE step #-}
674+ step _ () = readVar var >>= \x -> return $ Yield x ()
667-------------------------------------------------------------------------------
676-------------------------------------------------------------------------------
668-- Generation from SVar
677-- Generation from SVar
669-------------------------------------------------------------------------------
678-------------------------------------------------------------------------------