fixed-vector-hetero-0.3.1.2: Generic heterogeneous vectors

Safe HaskellNone
LanguageHaskell98

Data.Vector.HFixed.HVec

Contents

Description

Heterogeneous vector parametric in its elements

Synopsis

Generic heterogeneous vector

data HVec xs Source #

Generic heterogeneous vector

Instances

ArityC Eq xs => Eq (HVec xs) Source # 

Methods

(==) :: HVec xs -> HVec xs -> Bool #

(/=) :: HVec xs -> HVec xs -> Bool #

(ArityC Ord xs, Eq (HVec xs)) => Ord (HVec xs) Source # 

Methods

compare :: HVec xs -> HVec xs -> Ordering #

(<) :: HVec xs -> HVec xs -> Bool #

(<=) :: HVec xs -> HVec xs -> Bool #

(>) :: HVec xs -> HVec xs -> Bool #

(>=) :: HVec xs -> HVec xs -> Bool #

max :: HVec xs -> HVec xs -> HVec xs #

min :: HVec xs -> HVec xs -> HVec xs #

ArityC Show xs => Show (HVec xs) Source # 

Methods

showsPrec :: Int -> HVec xs -> ShowS #

show :: HVec xs -> String #

showList :: [HVec xs] -> ShowS #

ArityC Monoid xs => Monoid (HVec xs) Source # 

Methods

mempty :: HVec xs #

mappend :: HVec xs -> HVec xs -> HVec xs #

mconcat :: [HVec xs] -> HVec xs #

ArityC NFData xs => NFData (HVec xs) Source # 

Methods

rnf :: HVec xs -> () #

Arity xs => HVector (HVec xs) Source # 

Associated Types

type Elems (HVec xs) :: [*] Source #

Methods

construct :: Fun (Elems (HVec xs)) (HVec xs) Source #

inspect :: HVec xs -> Fun (Elems (HVec xs)) a -> a Source #

type Elems (HVec xs) Source # 
type Elems (HVec xs) = xs

Mutable heterogeneous vector

data MutableHVec s xs Source #

Generic mutable heterogeneous vector.

newMutableHVec :: forall m xs. (PrimMonad m, Arity xs) => m (MutableHVec (PrimState m) xs) Source #

Create new uninitialized heterogeneous vector.

unsafeFreezeHVec :: PrimMonad m => MutableHVec (PrimState m) xs -> m (HVec xs) Source #

Convert mutable vector to immutable one. Mutable vector must not be modified after that.

Indices

readMutableHVec :: (PrimMonad m, Index n xs, Arity xs) => MutableHVec (PrimState m) xs -> n -> m (ValueAt n xs) Source #

Read value at statically known index.

writeMutableHVec :: (PrimMonad m, Index n xs, Arity xs) => MutableHVec (PrimState m) xs -> n -> ValueAt n xs -> m () Source #

Write value at statically known index

modifyMutableHVec :: (PrimMonad m, Index n xs, Arity xs) => MutableHVec (PrimState m) xs -> n -> (ValueAt n xs -> ValueAt n xs) -> m () Source #

Apply function to value at statically known index.

modifyMutableHVec' :: (PrimMonad m, Index n xs, Arity xs) => MutableHVec (PrimState m) xs -> n -> (ValueAt n xs -> ValueAt n xs) -> m () Source #

Strictly apply function to value at statically known index.