module Streaming.Primitive where

import Control.Monad.Primitive
import Streaming



-- | Orphan instance providing a primitive monad instance for streams. Allows
-- impurely folds into mutable vectors from streams.

instance (Monad m, PrimMonad m, Functor f)  PrimMonad (Stream f m) where
  type PrimState (Stream f m) = PrimState m
  {-# Inline primitive #-}
  primitive = lift . primitive