{-# LANGUAGE RankNTypes #-}

module HaskellWorks.Data.Streams.Internal.Chunk where

import Control.Monad.Primitive

import qualified Data.Vector.Storable as DVS

data Chunk a = Chunk
  { forall a. Chunk a -> Int
chunkSize  :: Int
  , forall a.
Chunk a
-> forall (m :: * -> *).
   PrimMonad m =>
   MVector (PrimState m) a -> m ()
chunkWrite :: forall m. PrimMonad m => DVS.MVector (PrimState m) a -> m ()
  }