module Streaming.Primitive where
import Control.Monad.Primitive
import Streaming
instance (Monad m, PrimMonad m, Functor f) ⇒ PrimMonad (Stream f m) where
type PrimState (Stream f m) = PrimState m
{-# Inline primitive #-}
primitive :: (State# (PrimState (Stream f m))
-> (# State# (PrimState (Stream f m)), a #))
-> Stream f m a
primitive = m a -> Stream f m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (m a -> Stream f m a)
-> ((State# (PrimState m) -> (# State# (PrimState m), a #)) -> m a)
-> (State# (PrimState m) -> (# State# (PrimState m), a #))
-> Stream f m a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (State# (PrimState m) -> (# State# (PrimState m), a #)) -> m a
forall (m :: * -> *) a.
PrimMonad m =>
(State# (PrimState m) -> (# State# (PrimState m), a #)) -> m a
primitive