PrimitiveArray-0.9.1.0: Efficient multidimensional arrays

Safe HaskellNone
LanguageHaskell2010

Data.PrimitiveArray.Dense

Contents

Description

Dense primitive arrays where the lower index is zero (or the equivalent of zero for newtypes and enumerations).

Actual writes to data structures use a more safe write instead of the unsafe unsafeWrite. Writes also tend to occur much less in DP algorithms (say, N^2 writes for an N^3 time algorithm -- mostly reads are being executed).

TODO consider if we want to force the lower index to be zero, or allow non-zero lower indices. Will have to be considered together with the Index.Class module!

TODO while Unboxed is, in princile, Hashable, we'd need the corresponding VU.Vector instances ...

Synopsis

Unboxed, multidimensional arrays.

data Unboxed sh e Source #

Constructors

Unboxed !(LimitType sh) !(Vector e) 
Instances
(Index sh, Unbox elm) => PrimArrayOps Unboxed sh elm Source # 
Instance details

Defined in Data.PrimitiveArray.Dense

Methods

upperBound :: Unboxed sh elm -> LimitType sh Source #

unsafeFreeze :: PrimMonad m => MutArr m (Unboxed sh elm) -> m (Unboxed sh elm) Source #

unsafeThaw :: PrimMonad m => Unboxed sh elm -> m (MutArr m (Unboxed sh elm)) Source #

unsafeIndex :: Unboxed sh elm -> sh -> elm Source #

transformShape :: Index sh' => (LimitType sh -> LimitType sh') -> Unboxed sh elm -> Unboxed sh' elm Source #

(Index sh, Unbox elm) => MPrimArrayOps Unboxed sh elm Source # 
Instance details

Defined in Data.PrimitiveArray.Dense

Methods

upperBoundM :: MutArr m (Unboxed sh elm) -> LimitType sh Source #

fromListM :: PrimMonad m => LimitType sh -> [elm] -> m (MutArr m (Unboxed sh elm)) Source #

newM :: PrimMonad m => LimitType sh -> m (MutArr m (Unboxed sh elm)) Source #

newWithM :: PrimMonad m => LimitType sh -> elm -> m (MutArr m (Unboxed sh elm)) Source #

readM :: PrimMonad m => MutArr m (Unboxed sh elm) -> sh -> m elm Source #

writeM :: PrimMonad m => MutArr m (Unboxed sh elm) -> sh -> elm -> m () Source #

(Index sh, Unbox e, Unbox e') => PrimArrayMap Unboxed sh e e' Source # 
Instance details

Defined in Data.PrimitiveArray.Dense

Methods

map :: (e -> e') -> Unboxed sh e -> Unboxed sh e' Source #

(Eq (LimitType sh), Eq e, Unbox e) => Eq (Unboxed sh e) Source # 
Instance details

Defined in Data.PrimitiveArray.Dense

Methods

(==) :: Unboxed sh e -> Unboxed sh e -> Bool #

(/=) :: Unboxed sh e -> Unboxed sh e -> Bool #

(Data sh, Data (LimitType sh), Data e, Unbox e) => Data (Unboxed sh e) Source # 
Instance details

Defined in Data.PrimitiveArray.Dense

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Unboxed sh e -> c (Unboxed sh e) #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Unboxed sh e) #

toConstr :: Unboxed sh e -> Constr #

dataTypeOf :: Unboxed sh e -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Unboxed sh e)) #

dataCast2 :: Typeable t => (forall d e0. (Data d, Data e0) => c (t d e0)) -> Maybe (c (Unboxed sh e)) #

gmapT :: (forall b. Data b => b -> b) -> Unboxed sh e -> Unboxed sh e #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Unboxed sh e -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Unboxed sh e -> r #

gmapQ :: (forall d. Data d => d -> u) -> Unboxed sh e -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Unboxed sh e -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Unboxed sh e -> m (Unboxed sh e) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Unboxed sh e -> m (Unboxed sh e) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Unboxed sh e -> m (Unboxed sh e) #

(Read (LimitType sh), Read e, Unbox e) => Read (Unboxed sh e) Source # 
Instance details

Defined in Data.PrimitiveArray.Dense

(Show (LimitType sh), Show e, Unbox e) => Show (Unboxed sh e) Source # 
Instance details

Defined in Data.PrimitiveArray.Dense

Methods

showsPrec :: Int -> Unboxed sh e -> ShowS #

show :: Unboxed sh e -> String #

showList :: [Unboxed sh e] -> ShowS #

Generic (MutArr m (Unboxed sh e)) Source # 
Instance details

Defined in Data.PrimitiveArray.Dense

Associated Types

type Rep (MutArr m (Unboxed sh e)) :: Type -> Type #

Methods

from :: MutArr m (Unboxed sh e) -> Rep (MutArr m (Unboxed sh e)) x #

to :: Rep (MutArr m (Unboxed sh e)) x -> MutArr m (Unboxed sh e) #

(Generic (LimitType sh), Generic e, Unbox e) => Generic (Unboxed sh e) Source # 
Instance details

Defined in Data.PrimitiveArray.Dense

Associated Types

type Rep (Unboxed sh e) :: Type -> Type #

Methods

from :: Unboxed sh e -> Rep (Unboxed sh e) x #

to :: Rep (Unboxed sh e) x -> Unboxed sh e #

NFData (LimitType sh) => NFData (MutArr m (Unboxed sh e)) Source # 
Instance details

Defined in Data.PrimitiveArray.Dense

Methods

rnf :: MutArr m (Unboxed sh e) -> () #

NFData (LimitType sh) => NFData (Unboxed sh e) Source # 
Instance details

Defined in Data.PrimitiveArray.Dense

Methods

rnf :: Unboxed sh e -> () #

(Hashable (LimitType sh), Hashable e, Hashable (Vector e), Unbox e, Generic (LimitType sh), Generic e) => Hashable (Unboxed sh e) Source # 
Instance details

Defined in Data.PrimitiveArray.Dense

Methods

hashWithSalt :: Int -> Unboxed sh e -> Int #

hash :: Unboxed sh e -> Int #

(ToJSON (LimitType sh), ToJSON e, Unbox e, Generic (LimitType sh), Generic e) => ToJSON (Unboxed sh e) Source # 
Instance details

Defined in Data.PrimitiveArray.Dense

Methods

toJSON :: Unboxed sh e -> Value #

toEncoding :: Unboxed sh e -> Encoding #

toJSONList :: [Unboxed sh e] -> Value #

toEncodingList :: [Unboxed sh e] -> Encoding #

(FromJSON (LimitType sh), FromJSON e, Unbox e, Generic (LimitType sh), Generic e) => FromJSON (Unboxed sh e) Source # 
Instance details

Defined in Data.PrimitiveArray.Dense

Methods

parseJSON :: Value -> Parser (Unboxed sh e) #

parseJSONList :: Value -> Parser [Unboxed sh e] #

(Binary (LimitType sh), Binary e, Unbox e, Generic (LimitType sh), Generic e) => Binary (Unboxed sh e) Source # 
Instance details

Defined in Data.PrimitiveArray.Dense

Methods

put :: Unboxed sh e -> Put #

get :: Get (Unboxed sh e) #

putList :: [Unboxed sh e] -> Put #

(Serialize (LimitType sh), Serialize e, Unbox e, Generic (LimitType sh), Generic e) => Serialize (Unboxed sh e) Source # 
Instance details

Defined in Data.PrimitiveArray.Dense

Methods

put :: Putter (Unboxed sh e) #

get :: Get (Unboxed sh e) #

data MutArr m (Unboxed sh e) Source # 
Instance details

Defined in Data.PrimitiveArray.Dense

data MutArr m (Unboxed sh e) = MUnboxed !(LimitType sh) !(MVector (PrimState m) e)
type Rep (MutArr m (Unboxed sh e)) Source # 
Instance details

Defined in Data.PrimitiveArray.Dense

type Rep (MutArr m (Unboxed sh e)) = D1 (MetaData "MutArr" "Data.PrimitiveArray.Dense" "PrimitiveArray-0.9.1.0-9uvzNC5l8VOJO4xuYDZHFR" False) (C1 (MetaCons "MUnboxed" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 (LimitType sh)) :*: S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 (MVector (PrimState m) e))))
type Rep (Unboxed sh e) Source # 
Instance details

Defined in Data.PrimitiveArray.Dense

type Rep (Unboxed sh e) = D1 (MetaData "Unboxed" "Data.PrimitiveArray.Dense" "PrimitiveArray-0.9.1.0-9uvzNC5l8VOJO4xuYDZHFR" False) (C1 (MetaCons "Unboxed" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 (LimitType sh)) :*: S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 (Vector e))))

Boxed, multidimensional arrays.

data Boxed sh e Source #

Constructors

Boxed !(LimitType sh) !(Vector e) 
Instances
Index sh => PrimArrayOps Boxed sh elm Source # 
Instance details

Defined in Data.PrimitiveArray.Dense

Methods

upperBound :: Boxed sh elm -> LimitType sh Source #

unsafeFreeze :: PrimMonad m => MutArr m (Boxed sh elm) -> m (Boxed sh elm) Source #

unsafeThaw :: PrimMonad m => Boxed sh elm -> m (MutArr m (Boxed sh elm)) Source #

unsafeIndex :: Boxed sh elm -> sh -> elm Source #

transformShape :: Index sh' => (LimitType sh -> LimitType sh') -> Boxed sh elm -> Boxed sh' elm Source #

Index sh => MPrimArrayOps Boxed sh elm Source # 
Instance details

Defined in Data.PrimitiveArray.Dense

Methods

upperBoundM :: MutArr m (Boxed sh elm) -> LimitType sh Source #

fromListM :: PrimMonad m => LimitType sh -> [elm] -> m (MutArr m (Boxed sh elm)) Source #

newM :: PrimMonad m => LimitType sh -> m (MutArr m (Boxed sh elm)) Source #

newWithM :: PrimMonad m => LimitType sh -> elm -> m (MutArr m (Boxed sh elm)) Source #

readM :: PrimMonad m => MutArr m (Boxed sh elm) -> sh -> m elm Source #

writeM :: PrimMonad m => MutArr m (Boxed sh elm) -> sh -> elm -> m () Source #

Index sh => PrimArrayMap Boxed sh e e' Source # 
Instance details

Defined in Data.PrimitiveArray.Dense

Methods

map :: (e -> e') -> Boxed sh e -> Boxed sh e' Source #

(Eq (LimitType sh), Eq e) => Eq (Boxed sh e) Source # 
Instance details

Defined in Data.PrimitiveArray.Dense

Methods

(==) :: Boxed sh e -> Boxed sh e -> Bool #

(/=) :: Boxed sh e -> Boxed sh e -> Bool #

(Data sh, Data (LimitType sh), Data e) => Data (Boxed sh e) Source # 
Instance details

Defined in Data.PrimitiveArray.Dense

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Boxed sh e -> c (Boxed sh e) #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Boxed sh e) #

toConstr :: Boxed sh e -> Constr #

dataTypeOf :: Boxed sh e -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Boxed sh e)) #

dataCast2 :: Typeable t => (forall d e0. (Data d, Data e0) => c (t d e0)) -> Maybe (c (Boxed sh e)) #

gmapT :: (forall b. Data b => b -> b) -> Boxed sh e -> Boxed sh e #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Boxed sh e -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Boxed sh e -> r #

gmapQ :: (forall d. Data d => d -> u) -> Boxed sh e -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Boxed sh e -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Boxed sh e -> m (Boxed sh e) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Boxed sh e -> m (Boxed sh e) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Boxed sh e -> m (Boxed sh e) #

(Read (LimitType sh), Read e) => Read (Boxed sh e) Source # 
Instance details

Defined in Data.PrimitiveArray.Dense

Methods

readsPrec :: Int -> ReadS (Boxed sh e) #

readList :: ReadS [Boxed sh e] #

readPrec :: ReadPrec (Boxed sh e) #

readListPrec :: ReadPrec [Boxed sh e] #

(Show (LimitType sh), Show e) => Show (Boxed sh e) Source # 
Instance details

Defined in Data.PrimitiveArray.Dense

Methods

showsPrec :: Int -> Boxed sh e -> ShowS #

show :: Boxed sh e -> String #

showList :: [Boxed sh e] -> ShowS #

Generic (MutArr m (Boxed sh e)) Source # 
Instance details

Defined in Data.PrimitiveArray.Dense

Associated Types

type Rep (MutArr m (Boxed sh e)) :: Type -> Type #

Methods

from :: MutArr m (Boxed sh e) -> Rep (MutArr m (Boxed sh e)) x #

to :: Rep (MutArr m (Boxed sh e)) x -> MutArr m (Boxed sh e) #

(Generic (LimitType sh), Generic e) => Generic (Boxed sh e) Source # 
Instance details

Defined in Data.PrimitiveArray.Dense

Associated Types

type Rep (Boxed sh e) :: Type -> Type #

Methods

from :: Boxed sh e -> Rep (Boxed sh e) x #

to :: Rep (Boxed sh e) x -> Boxed sh e #

NFData (LimitType sh) => NFData (MutArr m (Boxed sh e)) Source # 
Instance details

Defined in Data.PrimitiveArray.Dense

Methods

rnf :: MutArr m (Boxed sh e) -> () #

(NFData (LimitType sh), NFData e) => NFData (Boxed sh e) Source # 
Instance details

Defined in Data.PrimitiveArray.Dense

Methods

rnf :: Boxed sh e -> () #

(Hashable (LimitType sh), Hashable e, Hashable (Vector e), Unbox e, Generic (LimitType sh), Generic e) => Hashable (Boxed sh e) Source # 
Instance details

Defined in Data.PrimitiveArray.Dense

Methods

hashWithSalt :: Int -> Boxed sh e -> Int #

hash :: Boxed sh e -> Int #

(ToJSON (LimitType sh), ToJSON e, Unbox e, Generic (LimitType sh), Generic e) => ToJSON (Boxed sh e) Source # 
Instance details

Defined in Data.PrimitiveArray.Dense

Methods

toJSON :: Boxed sh e -> Value #

toEncoding :: Boxed sh e -> Encoding #

toJSONList :: [Boxed sh e] -> Value #

toEncodingList :: [Boxed sh e] -> Encoding #

(FromJSON (LimitType sh), FromJSON e, Unbox e, Generic (LimitType sh), Generic e) => FromJSON (Boxed sh e) Source # 
Instance details

Defined in Data.PrimitiveArray.Dense

Methods

parseJSON :: Value -> Parser (Boxed sh e) #

parseJSONList :: Value -> Parser [Boxed sh e] #

(Binary (LimitType sh), Binary e, Unbox e, Generic (LimitType sh), Generic e) => Binary (Boxed sh e) Source # 
Instance details

Defined in Data.PrimitiveArray.Dense

Methods

put :: Boxed sh e -> Put #

get :: Get (Boxed sh e) #

putList :: [Boxed sh e] -> Put #

(Serialize (LimitType sh), Serialize e, Unbox e, Generic (LimitType sh), Generic e) => Serialize (Boxed sh e) Source # 
Instance details

Defined in Data.PrimitiveArray.Dense

Methods

put :: Putter (Boxed sh e) #

get :: Get (Boxed sh e) #

data MutArr m (Boxed sh e) Source # 
Instance details

Defined in Data.PrimitiveArray.Dense

data MutArr m (Boxed sh e) = MBoxed !(LimitType sh) !(MVector (PrimState m) e)
type Rep (MutArr m (Boxed sh e)) Source # 
Instance details

Defined in Data.PrimitiveArray.Dense

type Rep (MutArr m (Boxed sh e)) = D1 (MetaData "MutArr" "Data.PrimitiveArray.Dense" "PrimitiveArray-0.9.1.0-9uvzNC5l8VOJO4xuYDZHFR" False) (C1 (MetaCons "MBoxed" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 (LimitType sh)) :*: S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 (MVector (PrimState m) e))))
type Rep (Boxed sh e) Source # 
Instance details

Defined in Data.PrimitiveArray.Dense

type Rep (Boxed sh e) = D1 (MetaData "Boxed" "Data.PrimitiveArray.Dense" "PrimitiveArray-0.9.1.0-9uvzNC5l8VOJO4xuYDZHFR" False) (C1 (MetaCons "Boxed" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 (LimitType sh)) :*: S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 (Vector e))))