{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE KindSignatures #-}
module Data.Matrix.Mutable
(
MMatrix
, dim
, takeRow
, write
, unsafeWrite
, read
, unsafeRead
, new
, replicate
) where
import GHC.Exts (Constraint)
import Prelude hiding (read, replicate)
import Control.Monad.Primitive (PrimMonad, PrimState)
import Data.Vector.Mutable (MVector)
import qualified Data.Matrix.Generic.Mutable as MG
type MMatrix a = MG.MMatrix MVector a
type Context x = (() :: Constraint)
dim :: Context a => MMatrix s a -> (Int, Int)
dim = MG.dim
takeRow :: Context a => MMatrix s a -> Int -> MVector s a
takeRow = MG.takeRow
write :: Context a => PrimMonad s => MMatrix (PrimState s) a -> (Int, Int) -> a -> s ()
write = MG.write
unsafeWrite :: (Context a, PrimMonad s) => MMatrix (PrimState s) a -> (Int, Int) -> a -> s ()
unsafeWrite = MG.unsafeWrite
read :: (Context a, PrimMonad s) => MMatrix (PrimState s) a -> (Int, Int) -> s a
read = MG.read
unsafeRead :: (Context a, PrimMonad s) => MMatrix (PrimState s) a -> (Int, Int) -> s a
unsafeRead = MG.unsafeRead
new :: (Context a, PrimMonad s) => (Int, Int) -> s (MMatrix (PrimState s) a)
new = MG.new
replicate :: (Context a, PrimMonad s) => (Int, Int) -> a -> s (MMatrix (PrimState s) a)
replicate = MG.replicate