Copyright | (c) Roman Leshchinskiy 2009-2010 |
---|---|

License | BSD-style |

Maintainer | Roman Leshchinskiy <rl@cse.unsw.edu.au> |

Stability | experimental |

Portability | non-portable |

Safe Haskell | None |

Language | Haskell2010 |

Mutable adaptive unboxed vectors

## Synopsis

- data family MVector s a
- type IOVector = MVector RealWorld
- type STVector s = MVector s
- class (Vector Vector a, MVector MVector a) => Unbox a
- length :: Unbox a => MVector s a -> Int
- null :: Unbox a => MVector s a -> Bool
- slice :: Unbox a => Int -> Int -> MVector s a -> MVector s a
- init :: Unbox a => MVector s a -> MVector s a
- tail :: Unbox a => MVector s a -> MVector s a
- take :: Unbox a => Int -> MVector s a -> MVector s a
- drop :: Unbox a => Int -> MVector s a -> MVector s a
- splitAt :: Unbox a => Int -> MVector s a -> (MVector s a, MVector s a)
- unsafeSlice :: Unbox a => Int -> Int -> MVector s a -> MVector s a
- unsafeInit :: Unbox a => MVector s a -> MVector s a
- unsafeTail :: Unbox a => MVector s a -> MVector s a
- unsafeTake :: Unbox a => Int -> MVector s a -> MVector s a
- unsafeDrop :: Unbox a => Int -> MVector s a -> MVector s a
- overlaps :: Unbox a => MVector s a -> MVector s a -> Bool
- new :: (PrimMonad m, Unbox a) => Int -> m (MVector (PrimState m) a)
- unsafeNew :: (PrimMonad m, Unbox a) => Int -> m (MVector (PrimState m) a)
- replicate :: (PrimMonad m, Unbox a) => Int -> a -> m (MVector (PrimState m) a)
- replicateM :: (PrimMonad m, Unbox a) => Int -> m a -> m (MVector (PrimState m) a)
- clone :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> m (MVector (PrimState m) a)
- grow :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> Int -> m (MVector (PrimState m) a)
- unsafeGrow :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> Int -> m (MVector (PrimState m) a)
- clear :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> m ()
- zip :: (Unbox a, Unbox b) => MVector s a -> MVector s b -> MVector s (a, b)
- zip3 :: (Unbox a, Unbox b, Unbox c) => MVector s a -> MVector s b -> MVector s c -> MVector s (a, b, c)
- zip4 :: (Unbox a, Unbox b, Unbox c, Unbox d) => MVector s a -> MVector s b -> MVector s c -> MVector s d -> MVector s (a, b, c, d)
- zip5 :: (Unbox a, Unbox b, Unbox c, Unbox d, Unbox e) => MVector s a -> MVector s b -> MVector s c -> MVector s d -> MVector s e -> MVector s (a, b, c, d, e)
- zip6 :: (Unbox a, Unbox b, Unbox c, Unbox d, Unbox e, Unbox f) => MVector s a -> MVector s b -> MVector s c -> MVector s d -> MVector s e -> MVector s f -> MVector s (a, b, c, d, e, f)
- unzip :: (Unbox a, Unbox b) => MVector s (a, b) -> (MVector s a, MVector s b)
- unzip3 :: (Unbox a, Unbox b, Unbox c) => MVector s (a, b, c) -> (MVector s a, MVector s b, MVector s c)
- unzip4 :: (Unbox a, Unbox b, Unbox c, Unbox d) => MVector s (a, b, c, d) -> (MVector s a, MVector s b, MVector s c, MVector s d)
- unzip5 :: (Unbox a, Unbox b, Unbox c, Unbox d, Unbox e) => MVector s (a, b, c, d, e) -> (MVector s a, MVector s b, MVector s c, MVector s d, MVector s e)
- unzip6 :: (Unbox a, Unbox b, Unbox c, Unbox d, Unbox e, Unbox f) => MVector s (a, b, c, d, e, f) -> (MVector s a, MVector s b, MVector s c, MVector s d, MVector s e, MVector s f)
- read :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> Int -> m a
- write :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> Int -> a -> m ()
- modify :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> (a -> a) -> Int -> m ()
- swap :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> Int -> Int -> m ()
- unsafeRead :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> Int -> m a
- unsafeWrite :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> Int -> a -> m ()
- unsafeModify :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> (a -> a) -> Int -> m ()
- unsafeSwap :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> Int -> Int -> m ()
- nextPermutation :: (PrimMonad m, Ord e, Unbox e) => MVector (PrimState m) e -> m Bool
- set :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> a -> m ()
- copy :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> MVector (PrimState m) a -> m ()
- move :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> MVector (PrimState m) a -> m ()
- unsafeCopy :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> MVector (PrimState m) a -> m ()
- unsafeMove :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> MVector (PrimState m) a -> m ()

# Mutable vectors of primitive types

data family MVector s a Source #

## Instances

MVector MVector Bool Source # | |

Defined in Data.Vector.Unboxed.Base basicLength :: MVector s Bool -> Int Source # basicUnsafeSlice :: Int -> Int -> MVector s Bool -> MVector s Bool Source # basicOverlaps :: MVector s Bool -> MVector s Bool -> Bool Source # basicUnsafeNew :: PrimMonad m => Int -> m (MVector (PrimState m) Bool) Source # basicInitialize :: PrimMonad m => MVector (PrimState m) Bool -> m () Source # basicUnsafeReplicate :: PrimMonad m => Int -> Bool -> m (MVector (PrimState m) Bool) Source # basicUnsafeRead :: PrimMonad m => MVector (PrimState m) Bool -> Int -> m Bool Source # basicUnsafeWrite :: PrimMonad m => MVector (PrimState m) Bool -> Int -> Bool -> m () Source # basicClear :: PrimMonad m => MVector (PrimState m) Bool -> m () Source # basicSet :: PrimMonad m => MVector (PrimState m) Bool -> Bool -> m () Source # basicUnsafeCopy :: PrimMonad m => MVector (PrimState m) Bool -> MVector (PrimState m) Bool -> m () Source # basicUnsafeMove :: PrimMonad m => MVector (PrimState m) Bool -> MVector (PrimState m) Bool -> m () Source # basicUnsafeGrow :: PrimMonad m => MVector (PrimState m) Bool -> Int -> m (MVector (PrimState m) Bool) Source # | |

MVector MVector Char Source # | |

Defined in Data.Vector.Unboxed.Base basicLength :: MVector s Char -> Int Source # basicUnsafeSlice :: Int -> Int -> MVector s Char -> MVector s Char Source # basicOverlaps :: MVector s Char -> MVector s Char -> Bool Source # basicUnsafeNew :: PrimMonad m => Int -> m (MVector (PrimState m) Char) Source # basicInitialize :: PrimMonad m => MVector (PrimState m) Char -> m () Source # basicUnsafeReplicate :: PrimMonad m => Int -> Char -> m (MVector (PrimState m) Char) Source # basicUnsafeRead :: PrimMonad m => MVector (PrimState m) Char -> Int -> m Char Source # basicUnsafeWrite :: PrimMonad m => MVector (PrimState m) Char -> Int -> Char -> m () Source # basicClear :: PrimMonad m => MVector (PrimState m) Char -> m () Source # basicSet :: PrimMonad m => MVector (PrimState m) Char -> Char -> m () Source # basicUnsafeCopy :: PrimMonad m => MVector (PrimState m) Char -> MVector (PrimState m) Char -> m () Source # basicUnsafeMove :: PrimMonad m => MVector (PrimState m) Char -> MVector (PrimState m) Char -> m () Source # basicUnsafeGrow :: PrimMonad m => MVector (PrimState m) Char -> Int -> m (MVector (PrimState m) Char) Source # | |

MVector MVector Double Source # | |

Defined in Data.Vector.Unboxed.Base basicLength :: MVector s Double -> Int Source # basicUnsafeSlice :: Int -> Int -> MVector s Double -> MVector s Double Source # basicOverlaps :: MVector s Double -> MVector s Double -> Bool Source # basicUnsafeNew :: PrimMonad m => Int -> m (MVector (PrimState m) Double) Source # basicInitialize :: PrimMonad m => MVector (PrimState m) Double -> m () Source # basicUnsafeReplicate :: PrimMonad m => Int -> Double -> m (MVector (PrimState m) Double) Source # basicUnsafeRead :: PrimMonad m => MVector (PrimState m) Double -> Int -> m Double Source # basicUnsafeWrite :: PrimMonad m => MVector (PrimState m) Double -> Int -> Double -> m () Source # basicClear :: PrimMonad m => MVector (PrimState m) Double -> m () Source # basicSet :: PrimMonad m => MVector (PrimState m) Double -> Double -> m () Source # basicUnsafeCopy :: PrimMonad m => MVector (PrimState m) Double -> MVector (PrimState m) Double -> m () Source # basicUnsafeMove :: PrimMonad m => MVector (PrimState m) Double -> MVector (PrimState m) Double -> m () Source # basicUnsafeGrow :: PrimMonad m => MVector (PrimState m) Double -> Int -> m (MVector (PrimState m) Double) Source # | |

MVector MVector Float Source # | |

Defined in Data.Vector.Unboxed.Base basicLength :: MVector s Float -> Int Source # basicUnsafeSlice :: Int -> Int -> MVector s Float -> MVector s Float Source # basicOverlaps :: MVector s Float -> MVector s Float -> Bool Source # basicUnsafeNew :: PrimMonad m => Int -> m (MVector (PrimState m) Float) Source # basicInitialize :: PrimMonad m => MVector (PrimState m) Float -> m () Source # basicUnsafeReplicate :: PrimMonad m => Int -> Float -> m (MVector (PrimState m) Float) Source # basicUnsafeRead :: PrimMonad m => MVector (PrimState m) Float -> Int -> m Float Source # basicUnsafeWrite :: PrimMonad m => MVector (PrimState m) Float -> Int -> Float -> m () Source # basicClear :: PrimMonad m => MVector (PrimState m) Float -> m () Source # basicSet :: PrimMonad m => MVector (PrimState m) Float -> Float -> m () Source # basicUnsafeCopy :: PrimMonad m => MVector (PrimState m) Float -> MVector (PrimState m) Float -> m () Source # basicUnsafeMove :: PrimMonad m => MVector (PrimState m) Float -> MVector (PrimState m) Float -> m () Source # basicUnsafeGrow :: PrimMonad m => MVector (PrimState m) Float -> Int -> m (MVector (PrimState m) Float) Source # | |

MVector MVector Int Source # | |

Defined in Data.Vector.Unboxed.Base basicLength :: MVector s Int -> Int Source # basicUnsafeSlice :: Int -> Int -> MVector s Int -> MVector s Int Source # basicOverlaps :: MVector s Int -> MVector s Int -> Bool Source # basicUnsafeNew :: PrimMonad m => Int -> m (MVector (PrimState m) Int) Source # basicInitialize :: PrimMonad m => MVector (PrimState m) Int -> m () Source # basicUnsafeReplicate :: PrimMonad m => Int -> Int -> m (MVector (PrimState m) Int) Source # basicUnsafeRead :: PrimMonad m => MVector (PrimState m) Int -> Int -> m Int Source # basicUnsafeWrite :: PrimMonad m => MVector (PrimState m) Int -> Int -> Int -> m () Source # basicClear :: PrimMonad m => MVector (PrimState m) Int -> m () Source # basicSet :: PrimMonad m => MVector (PrimState m) Int -> Int -> m () Source # basicUnsafeCopy :: PrimMonad m => MVector (PrimState m) Int -> MVector (PrimState m) Int -> m () Source # basicUnsafeMove :: PrimMonad m => MVector (PrimState m) Int -> MVector (PrimState m) Int -> m () Source # basicUnsafeGrow :: PrimMonad m => MVector (PrimState m) Int -> Int -> m (MVector (PrimState m) Int) Source # | |

MVector MVector Int8 Source # | |

Defined in Data.Vector.Unboxed.Base basicLength :: MVector s Int8 -> Int Source # basicUnsafeSlice :: Int -> Int -> MVector s Int8 -> MVector s Int8 Source # basicOverlaps :: MVector s Int8 -> MVector s Int8 -> Bool Source # basicUnsafeNew :: PrimMonad m => Int -> m (MVector (PrimState m) Int8) Source # basicInitialize :: PrimMonad m => MVector (PrimState m) Int8 -> m () Source # basicUnsafeReplicate :: PrimMonad m => Int -> Int8 -> m (MVector (PrimState m) Int8) Source # basicUnsafeRead :: PrimMonad m => MVector (PrimState m) Int8 -> Int -> m Int8 Source # basicUnsafeWrite :: PrimMonad m => MVector (PrimState m) Int8 -> Int -> Int8 -> m () Source # basicClear :: PrimMonad m => MVector (PrimState m) Int8 -> m () Source # basicSet :: PrimMonad m => MVector (PrimState m) Int8 -> Int8 -> m () Source # basicUnsafeCopy :: PrimMonad m => MVector (PrimState m) Int8 -> MVector (PrimState m) Int8 -> m () Source # basicUnsafeMove :: PrimMonad m => MVector (PrimState m) Int8 -> MVector (PrimState m) Int8 -> m () Source # basicUnsafeGrow :: PrimMonad m => MVector (PrimState m) Int8 -> Int -> m (MVector (PrimState m) Int8) Source # | |

MVector MVector Int16 Source # | |

Defined in Data.Vector.Unboxed.Base basicLength :: MVector s Int16 -> Int Source # basicUnsafeSlice :: Int -> Int -> MVector s Int16 -> MVector s Int16 Source # basicOverlaps :: MVector s Int16 -> MVector s Int16 -> Bool Source # basicUnsafeNew :: PrimMonad m => Int -> m (MVector (PrimState m) Int16) Source # basicInitialize :: PrimMonad m => MVector (PrimState m) Int16 -> m () Source # basicUnsafeReplicate :: PrimMonad m => Int -> Int16 -> m (MVector (PrimState m) Int16) Source # basicUnsafeRead :: PrimMonad m => MVector (PrimState m) Int16 -> Int -> m Int16 Source # basicUnsafeWrite :: PrimMonad m => MVector (PrimState m) Int16 -> Int -> Int16 -> m () Source # basicClear :: PrimMonad m => MVector (PrimState m) Int16 -> m () Source # basicSet :: PrimMonad m => MVector (PrimState m) Int16 -> Int16 -> m () Source # basicUnsafeCopy :: PrimMonad m => MVector (PrimState m) Int16 -> MVector (PrimState m) Int16 -> m () Source # basicUnsafeMove :: PrimMonad m => MVector (PrimState m) Int16 -> MVector (PrimState m) Int16 -> m () Source # basicUnsafeGrow :: PrimMonad m => MVector (PrimState m) Int16 -> Int -> m (MVector (PrimState m) Int16) Source # | |

MVector MVector Int32 Source # | |

Defined in Data.Vector.Unboxed.Base basicLength :: MVector s Int32 -> Int Source # basicUnsafeSlice :: Int -> Int -> MVector s Int32 -> MVector s Int32 Source # basicOverlaps :: MVector s Int32 -> MVector s Int32 -> Bool Source # basicUnsafeNew :: PrimMonad m => Int -> m (MVector (PrimState m) Int32) Source # basicInitialize :: PrimMonad m => MVector (PrimState m) Int32 -> m () Source # basicUnsafeReplicate :: PrimMonad m => Int -> Int32 -> m (MVector (PrimState m) Int32) Source # basicUnsafeRead :: PrimMonad m => MVector (PrimState m) Int32 -> Int -> m Int32 Source # basicUnsafeWrite :: PrimMonad m => MVector (PrimState m) Int32 -> Int -> Int32 -> m () Source # basicClear :: PrimMonad m => MVector (PrimState m) Int32 -> m () Source # basicSet :: PrimMonad m => MVector (PrimState m) Int32 -> Int32 -> m () Source # basicUnsafeCopy :: PrimMonad m => MVector (PrimState m) Int32 -> MVector (PrimState m) Int32 -> m () Source # basicUnsafeMove :: PrimMonad m => MVector (PrimState m) Int32 -> MVector (PrimState m) Int32 -> m () Source # basicUnsafeGrow :: PrimMonad m => MVector (PrimState m) Int32 -> Int -> m (MVector (PrimState m) Int32) Source # | |

MVector MVector Int64 Source # | |

Defined in Data.Vector.Unboxed.Base basicLength :: MVector s Int64 -> Int Source # basicUnsafeSlice :: Int -> Int -> MVector s Int64 -> MVector s Int64 Source # basicOverlaps :: MVector s Int64 -> MVector s Int64 -> Bool Source # basicUnsafeNew :: PrimMonad m => Int -> m (MVector (PrimState m) Int64) Source # basicInitialize :: PrimMonad m => MVector (PrimState m) Int64 -> m () Source # basicUnsafeReplicate :: PrimMonad m => Int -> Int64 -> m (MVector (PrimState m) Int64) Source # basicUnsafeRead :: PrimMonad m => MVector (PrimState m) Int64 -> Int -> m Int64 Source # basicUnsafeWrite :: PrimMonad m => MVector (PrimState m) Int64 -> Int -> Int64 -> m () Source # basicClear :: PrimMonad m => MVector (PrimState m) Int64 -> m () Source # basicSet :: PrimMonad m => MVector (PrimState m) Int64 -> Int64 -> m () Source # basicUnsafeCopy :: PrimMonad m => MVector (PrimState m) Int64 -> MVector (PrimState m) Int64 -> m () Source # basicUnsafeMove :: PrimMonad m => MVector (PrimState m) Int64 -> MVector (PrimState m) Int64 -> m () Source # basicUnsafeGrow :: PrimMonad m => MVector (PrimState m) Int64 -> Int -> m (MVector (PrimState m) Int64) Source # | |

MVector MVector Word Source # | |

Defined in Data.Vector.Unboxed.Base basicLength :: MVector s Word -> Int Source # basicUnsafeSlice :: Int -> Int -> MVector s Word -> MVector s Word Source # basicOverlaps :: MVector s Word -> MVector s Word -> Bool Source # basicUnsafeNew :: PrimMonad m => Int -> m (MVector (PrimState m) Word) Source # basicInitialize :: PrimMonad m => MVector (PrimState m) Word -> m () Source # basicUnsafeReplicate :: PrimMonad m => Int -> Word -> m (MVector (PrimState m) Word) Source # basicUnsafeRead :: PrimMonad m => MVector (PrimState m) Word -> Int -> m Word Source # basicUnsafeWrite :: PrimMonad m => MVector (PrimState m) Word -> Int -> Word -> m () Source # basicClear :: PrimMonad m => MVector (PrimState m) Word -> m () Source # basicSet :: PrimMonad m => MVector (PrimState m) Word -> Word -> m () Source # basicUnsafeCopy :: PrimMonad m => MVector (PrimState m) Word -> MVector (PrimState m) Word -> m () Source # basicUnsafeMove :: PrimMonad m => MVector (PrimState m) Word -> MVector (PrimState m) Word -> m () Source # basicUnsafeGrow :: PrimMonad m => MVector (PrimState m) Word -> Int -> m (MVector (PrimState m) Word) Source # | |

MVector MVector Word8 Source # | |

Defined in Data.Vector.Unboxed.Base basicLength :: MVector s Word8 -> Int Source # basicUnsafeSlice :: Int -> Int -> MVector s Word8 -> MVector s Word8 Source # basicOverlaps :: MVector s Word8 -> MVector s Word8 -> Bool Source # basicUnsafeNew :: PrimMonad m => Int -> m (MVector (PrimState m) Word8) Source # basicInitialize :: PrimMonad m => MVector (PrimState m) Word8 -> m () Source # basicUnsafeReplicate :: PrimMonad m => Int -> Word8 -> m (MVector (PrimState m) Word8) Source # basicUnsafeRead :: PrimMonad m => MVector (PrimState m) Word8 -> Int -> m Word8 Source # basicUnsafeWrite :: PrimMonad m => MVector (PrimState m) Word8 -> Int -> Word8 -> m () Source # basicClear :: PrimMonad m => MVector (PrimState m) Word8 -> m () Source # basicSet :: PrimMonad m => MVector (PrimState m) Word8 -> Word8 -> m () Source # basicUnsafeCopy :: PrimMonad m => MVector (PrimState m) Word8 -> MVector (PrimState m) Word8 -> m () Source # basicUnsafeMove :: PrimMonad m => MVector (PrimState m) Word8 -> MVector (PrimState m) Word8 -> m () Source # basicUnsafeGrow :: PrimMonad m => MVector (PrimState m) Word8 -> Int -> m (MVector (PrimState m) Word8) Source # | |

MVector MVector Word16 Source # | |

Defined in Data.Vector.Unboxed.Base basicLength :: MVector s Word16 -> Int Source # basicUnsafeSlice :: Int -> Int -> MVector s Word16 -> MVector s Word16 Source # basicOverlaps :: MVector s Word16 -> MVector s Word16 -> Bool Source # basicUnsafeNew :: PrimMonad m => Int -> m (MVector (PrimState m) Word16) Source # basicInitialize :: PrimMonad m => MVector (PrimState m) Word16 -> m () Source # basicUnsafeReplicate :: PrimMonad m => Int -> Word16 -> m (MVector (PrimState m) Word16) Source # basicUnsafeRead :: PrimMonad m => MVector (PrimState m) Word16 -> Int -> m Word16 Source # basicUnsafeWrite :: PrimMonad m => MVector (PrimState m) Word16 -> Int -> Word16 -> m () Source # basicClear :: PrimMonad m => MVector (PrimState m) Word16 -> m () Source # basicSet :: PrimMonad m => MVector (PrimState m) Word16 -> Word16 -> m () Source # basicUnsafeCopy :: PrimMonad m => MVector (PrimState m) Word16 -> MVector (PrimState m) Word16 -> m () Source # basicUnsafeMove :: PrimMonad m => MVector (PrimState m) Word16 -> MVector (PrimState m) Word16 -> m () Source # basicUnsafeGrow :: PrimMonad m => MVector (PrimState m) Word16 -> Int -> m (MVector (PrimState m) Word16) Source # | |

MVector MVector Word32 Source # | |

Defined in Data.Vector.Unboxed.Base basicLength :: MVector s Word32 -> Int Source # basicUnsafeSlice :: Int -> Int -> MVector s Word32 -> MVector s Word32 Source # basicOverlaps :: MVector s Word32 -> MVector s Word32 -> Bool Source # basicUnsafeNew :: PrimMonad m => Int -> m (MVector (PrimState m) Word32) Source # basicInitialize :: PrimMonad m => MVector (PrimState m) Word32 -> m () Source # basicUnsafeReplicate :: PrimMonad m => Int -> Word32 -> m (MVector (PrimState m) Word32) Source # basicUnsafeRead :: PrimMonad m => MVector (PrimState m) Word32 -> Int -> m Word32 Source # basicUnsafeWrite :: PrimMonad m => MVector (PrimState m) Word32 -> Int -> Word32 -> m () Source # basicClear :: PrimMonad m => MVector (PrimState m) Word32 -> m () Source # basicSet :: PrimMonad m => MVector (PrimState m) Word32 -> Word32 -> m () Source # basicUnsafeCopy :: PrimMonad m => MVector (PrimState m) Word32 -> MVector (PrimState m) Word32 -> m () Source # basicUnsafeMove :: PrimMonad m => MVector (PrimState m) Word32 -> MVector (PrimState m) Word32 -> m () Source # basicUnsafeGrow :: PrimMonad m => MVector (PrimState m) Word32 -> Int -> m (MVector (PrimState m) Word32) Source # | |

MVector MVector Word64 Source # | |

Defined in Data.Vector.Unboxed.Base basicLength :: MVector s Word64 -> Int Source # basicUnsafeSlice :: Int -> Int -> MVector s Word64 -> MVector s Word64 Source # basicOverlaps :: MVector s Word64 -> MVector s Word64 -> Bool Source # basicUnsafeNew :: PrimMonad m => Int -> m (MVector (PrimState m) Word64) Source # basicInitialize :: PrimMonad m => MVector (PrimState m) Word64 -> m () Source # basicUnsafeReplicate :: PrimMonad m => Int -> Word64 -> m (MVector (PrimState m) Word64) Source # basicUnsafeRead :: PrimMonad m => MVector (PrimState m) Word64 -> Int -> m Word64 Source # basicUnsafeWrite :: PrimMonad m => MVector (PrimState m) Word64 -> Int -> Word64 -> m () Source # basicClear :: PrimMonad m => MVector (PrimState m) Word64 -> m () Source # basicSet :: PrimMonad m => MVector (PrimState m) Word64 -> Word64 -> m () Source # basicUnsafeCopy :: PrimMonad m => MVector (PrimState m) Word64 -> MVector (PrimState m) Word64 -> m () Source # basicUnsafeMove :: PrimMonad m => MVector (PrimState m) Word64 -> MVector (PrimState m) Word64 -> m () Source # basicUnsafeGrow :: PrimMonad m => MVector (PrimState m) Word64 -> Int -> m (MVector (PrimState m) Word64) Source # | |

MVector MVector () Source # | |

Defined in Data.Vector.Unboxed.Base basicLength :: MVector s () -> Int Source # basicUnsafeSlice :: Int -> Int -> MVector s () -> MVector s () Source # basicOverlaps :: MVector s () -> MVector s () -> Bool Source # basicUnsafeNew :: PrimMonad m => Int -> m (MVector (PrimState m) ()) Source # basicInitialize :: PrimMonad m => MVector (PrimState m) () -> m () Source # basicUnsafeReplicate :: PrimMonad m => Int -> () -> m (MVector (PrimState m) ()) Source # basicUnsafeRead :: PrimMonad m => MVector (PrimState m) () -> Int -> m () Source # basicUnsafeWrite :: PrimMonad m => MVector (PrimState m) () -> Int -> () -> m () Source # basicClear :: PrimMonad m => MVector (PrimState m) () -> m () Source # basicSet :: PrimMonad m => MVector (PrimState m) () -> () -> m () Source # basicUnsafeCopy :: PrimMonad m => MVector (PrimState m) () -> MVector (PrimState m) () -> m () Source # basicUnsafeMove :: PrimMonad m => MVector (PrimState m) () -> MVector (PrimState m) () -> m () Source # basicUnsafeGrow :: PrimMonad m => MVector (PrimState m) () -> Int -> m (MVector (PrimState m) ()) Source # | |

Unbox a => MVector MVector (Complex a) Source # | |

Defined in Data.Vector.Unboxed.Base basicLength :: MVector s (Complex a) -> Int Source # basicUnsafeSlice :: Int -> Int -> MVector s (Complex a) -> MVector s (Complex a) Source # basicOverlaps :: MVector s (Complex a) -> MVector s (Complex a) -> Bool Source # basicUnsafeNew :: PrimMonad m => Int -> m (MVector (PrimState m) (Complex a)) Source # basicInitialize :: PrimMonad m => MVector (PrimState m) (Complex a) -> m () Source # basicUnsafeReplicate :: PrimMonad m => Int -> Complex a -> m (MVector (PrimState m) (Complex a)) Source # basicUnsafeRead :: PrimMonad m => MVector (PrimState m) (Complex a) -> Int -> m (Complex a) Source # basicUnsafeWrite :: PrimMonad m => MVector (PrimState m) (Complex a) -> Int -> Complex a -> m () Source # basicClear :: PrimMonad m => MVector (PrimState m) (Complex a) -> m () Source # basicSet :: PrimMonad m => MVector (PrimState m) (Complex a) -> Complex a -> m () Source # basicUnsafeCopy :: PrimMonad m => MVector (PrimState m) (Complex a) -> MVector (PrimState m) (Complex a) -> m () Source # basicUnsafeMove :: PrimMonad m => MVector (PrimState m) (Complex a) -> MVector (PrimState m) (Complex a) -> m () Source # basicUnsafeGrow :: PrimMonad m => MVector (PrimState m) (Complex a) -> Int -> m (MVector (PrimState m) (Complex a)) Source # | |

(Unbox a, Unbox b) => MVector MVector (a, b) Source # | |

Defined in Data.Vector.Unboxed.Base basicLength :: MVector s (a, b) -> Int Source # basicUnsafeSlice :: Int -> Int -> MVector s (a, b) -> MVector s (a, b) Source # basicOverlaps :: MVector s (a, b) -> MVector s (a, b) -> Bool Source # basicUnsafeNew :: PrimMonad m => Int -> m (MVector (PrimState m) (a, b)) Source # basicInitialize :: PrimMonad m => MVector (PrimState m) (a, b) -> m () Source # basicUnsafeReplicate :: PrimMonad m => Int -> (a, b) -> m (MVector (PrimState m) (a, b)) Source # basicUnsafeRead :: PrimMonad m => MVector (PrimState m) (a, b) -> Int -> m (a, b) Source # basicUnsafeWrite :: PrimMonad m => MVector (PrimState m) (a, b) -> Int -> (a, b) -> m () Source # basicClear :: PrimMonad m => MVector (PrimState m) (a, b) -> m () Source # basicSet :: PrimMonad m => MVector (PrimState m) (a, b) -> (a, b) -> m () Source # basicUnsafeCopy :: PrimMonad m => MVector (PrimState m) (a, b) -> MVector (PrimState m) (a, b) -> m () Source # basicUnsafeMove :: PrimMonad m => MVector (PrimState m) (a, b) -> MVector (PrimState m) (a, b) -> m () Source # basicUnsafeGrow :: PrimMonad m => MVector (PrimState m) (a, b) -> Int -> m (MVector (PrimState m) (a, b)) Source # | |

(Unbox a, Unbox b, Unbox c) => MVector MVector (a, b, c) Source # | |

Defined in Data.Vector.Unboxed.Base basicLength :: MVector s (a, b, c) -> Int Source # basicUnsafeSlice :: Int -> Int -> MVector s (a, b, c) -> MVector s (a, b, c) Source # basicOverlaps :: MVector s (a, b, c) -> MVector s (a, b, c) -> Bool Source # basicUnsafeNew :: PrimMonad m => Int -> m (MVector (PrimState m) (a, b, c)) Source # basicInitialize :: PrimMonad m => MVector (PrimState m) (a, b, c) -> m () Source # basicUnsafeReplicate :: PrimMonad m => Int -> (a, b, c) -> m (MVector (PrimState m) (a, b, c)) Source # basicUnsafeRead :: PrimMonad m => MVector (PrimState m) (a, b, c) -> Int -> m (a, b, c) Source # basicUnsafeWrite :: PrimMonad m => MVector (PrimState m) (a, b, c) -> Int -> (a, b, c) -> m () Source # basicClear :: PrimMonad m => MVector (PrimState m) (a, b, c) -> m () Source # basicSet :: PrimMonad m => MVector (PrimState m) (a, b, c) -> (a, b, c) -> m () Source # basicUnsafeCopy :: PrimMonad m => MVector (PrimState m) (a, b, c) -> MVector (PrimState m) (a, b, c) -> m () Source # basicUnsafeMove :: PrimMonad m => MVector (PrimState m) (a, b, c) -> MVector (PrimState m) (a, b, c) -> m () Source # basicUnsafeGrow :: PrimMonad m => MVector (PrimState m) (a, b, c) -> Int -> m (MVector (PrimState m) (a, b, c)) Source # | |

(Unbox a, Unbox b, Unbox c, Unbox d) => MVector MVector (a, b, c, d) Source # | |

Defined in Data.Vector.Unboxed.Base basicLength :: MVector s (a, b, c, d) -> Int Source # basicUnsafeSlice :: Int -> Int -> MVector s (a, b, c, d) -> MVector s (a, b, c, d) Source # basicOverlaps :: MVector s (a, b, c, d) -> MVector s (a, b, c, d) -> Bool Source # basicUnsafeNew :: PrimMonad m => Int -> m (MVector (PrimState m) (a, b, c, d)) Source # basicInitialize :: PrimMonad m => MVector (PrimState m) (a, b, c, d) -> m () Source # basicUnsafeReplicate :: PrimMonad m => Int -> (a, b, c, d) -> m (MVector (PrimState m) (a, b, c, d)) Source # basicUnsafeRead :: PrimMonad m => MVector (PrimState m) (a, b, c, d) -> Int -> m (a, b, c, d) Source # basicUnsafeWrite :: PrimMonad m => MVector (PrimState m) (a, b, c, d) -> Int -> (a, b, c, d) -> m () Source # basicClear :: PrimMonad m => MVector (PrimState m) (a, b, c, d) -> m () Source # basicSet :: PrimMonad m => MVector (PrimState m) (a, b, c, d) -> (a, b, c, d) -> m () Source # basicUnsafeCopy :: PrimMonad m => MVector (PrimState m) (a, b, c, d) -> MVector (PrimState m) (a, b, c, d) -> m () Source # basicUnsafeMove :: PrimMonad m => MVector (PrimState m) (a, b, c, d) -> MVector (PrimState m) (a, b, c, d) -> m () Source # basicUnsafeGrow :: PrimMonad m => MVector (PrimState m) (a, b, c, d) -> Int -> m (MVector (PrimState m) (a, b, c, d)) Source # | |

(Unbox a, Unbox b, Unbox c, Unbox d, Unbox e) => MVector MVector (a, b, c, d, e) Source # | |

Defined in Data.Vector.Unboxed.Base basicLength :: MVector s (a, b, c, d, e) -> Int Source # basicUnsafeSlice :: Int -> Int -> MVector s (a, b, c, d, e) -> MVector s (a, b, c, d, e) Source # basicOverlaps :: MVector s (a, b, c, d, e) -> MVector s (a, b, c, d, e) -> Bool Source # basicUnsafeNew :: PrimMonad m => Int -> m (MVector (PrimState m) (a, b, c, d, e)) Source # basicInitialize :: PrimMonad m => MVector (PrimState m) (a, b, c, d, e) -> m () Source # basicUnsafeReplicate :: PrimMonad m => Int -> (a, b, c, d, e) -> m (MVector (PrimState m) (a, b, c, d, e)) Source # basicUnsafeRead :: PrimMonad m => MVector (PrimState m) (a, b, c, d, e) -> Int -> m (a, b, c, d, e) Source # basicUnsafeWrite :: PrimMonad m => MVector (PrimState m) (a, b, c, d, e) -> Int -> (a, b, c, d, e) -> m () Source # basicClear :: PrimMonad m => MVector (PrimState m) (a, b, c, d, e) -> m () Source # basicSet :: PrimMonad m => MVector (PrimState m) (a, b, c, d, e) -> (a, b, c, d, e) -> m () Source # basicUnsafeCopy :: PrimMonad m => MVector (PrimState m) (a, b, c, d, e) -> MVector (PrimState m) (a, b, c, d, e) -> m () Source # basicUnsafeMove :: PrimMonad m => MVector (PrimState m) (a, b, c, d, e) -> MVector (PrimState m) (a, b, c, d, e) -> m () Source # basicUnsafeGrow :: PrimMonad m => MVector (PrimState m) (a, b, c, d, e) -> Int -> m (MVector (PrimState m) (a, b, c, d, e)) Source # | |

(Unbox a, Unbox b, Unbox c, Unbox d, Unbox e, Unbox f) => MVector MVector (a, b, c, d, e, f) Source # | |

Defined in Data.Vector.Unboxed.Base basicLength :: MVector s (a, b, c, d, e, f) -> Int Source # basicUnsafeSlice :: Int -> Int -> MVector s (a, b, c, d, e, f) -> MVector s (a, b, c, d, e, f) Source # basicOverlaps :: MVector s (a, b, c, d, e, f) -> MVector s (a, b, c, d, e, f) -> Bool Source # basicUnsafeNew :: PrimMonad m => Int -> m (MVector (PrimState m) (a, b, c, d, e, f)) Source # basicInitialize :: PrimMonad m => MVector (PrimState m) (a, b, c, d, e, f) -> m () Source # basicUnsafeReplicate :: PrimMonad m => Int -> (a, b, c, d, e, f) -> m (MVector (PrimState m) (a, b, c, d, e, f)) Source # basicUnsafeRead :: PrimMonad m => MVector (PrimState m) (a, b, c, d, e, f) -> Int -> m (a, b, c, d, e, f) Source # basicUnsafeWrite :: PrimMonad m => MVector (PrimState m) (a, b, c, d, e, f) -> Int -> (a, b, c, d, e, f) -> m () Source # basicClear :: PrimMonad m => MVector (PrimState m) (a, b, c, d, e, f) -> m () Source # basicSet :: PrimMonad m => MVector (PrimState m) (a, b, c, d, e, f) -> (a, b, c, d, e, f) -> m () Source # basicUnsafeCopy :: PrimMonad m => MVector (PrimState m) (a, b, c, d, e, f) -> MVector (PrimState m) (a, b, c, d, e, f) -> m () Source # basicUnsafeMove :: PrimMonad m => MVector (PrimState m) (a, b, c, d, e, f) -> MVector (PrimState m) (a, b, c, d, e, f) -> m () Source # basicUnsafeGrow :: PrimMonad m => MVector (PrimState m) (a, b, c, d, e, f) -> Int -> m (MVector (PrimState m) (a, b, c, d, e, f)) Source # | |

NFData (MVector s a) Source # | |

Defined in Data.Vector.Unboxed.Base | |

data MVector s Bool Source # | |

data MVector s Char Source # | |

data MVector s Double Source # | |

data MVector s Float Source # | |

data MVector s Word64 Source # | |

data MVector s Word32 Source # | |

data MVector s Word16 Source # | |

data MVector s Word8 Source # | |

data MVector s Word Source # | |

data MVector s Int64 Source # | |

data MVector s Int32 Source # | |

data MVector s Int16 Source # | |

data MVector s Int8 Source # | |

data MVector s Int Source # | |

data MVector s () Source # | |

Defined in Data.Vector.Unboxed.Base | |

data MVector s (Complex a) Source # | |

Defined in Data.Vector.Unboxed.Base | |

data MVector s (a, b) Source # | |

data MVector s (a, b, c) Source # | |

data MVector s (a, b, c, d) Source # | |

data MVector s (a, b, c, d, e) Source # | |

data MVector s (a, b, c, d, e, f) Source # | |

class (Vector Vector a, MVector MVector a) => Unbox a Source #

## Instances

# Accessors

## Length information

## Extracting subvectors

slice :: Unbox a => Int -> Int -> MVector s a -> MVector s a Source #

Yield a part of the mutable vector without copying it.

Yield a part of the mutable vector without copying it. No bounds checks are performed.

## Overlapping

overlaps :: Unbox a => MVector s a -> MVector s a -> Bool Source #

Check whether two vectors overlap.

# Construction

## Initialisation

new :: (PrimMonad m, Unbox a) => Int -> m (MVector (PrimState m) a) Source #

Create a mutable vector of the given length.

unsafeNew :: (PrimMonad m, Unbox a) => Int -> m (MVector (PrimState m) a) Source #

Create a mutable vector of the given length. The memory is not initialized.

replicate :: (PrimMonad m, Unbox a) => Int -> a -> m (MVector (PrimState m) a) Source #

Create a mutable vector of the given length (0 if the length is negative) and fill it with an initial value.

replicateM :: (PrimMonad m, Unbox a) => Int -> m a -> m (MVector (PrimState m) a) Source #

Create a mutable vector of the given length (0 if the length is negative) and fill it with values produced by repeatedly executing the monadic action.

clone :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> m (MVector (PrimState m) a) Source #

Create a copy of a mutable vector.

## Growing

grow :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> Int -> m (MVector (PrimState m) a) Source #

Grow a vector by the given number of elements. The number must be positive.

unsafeGrow :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> Int -> m (MVector (PrimState m) a) Source #

Grow a vector by the given number of elements. The number must be positive but this is not checked.

## Restricting memory usage

clear :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> m () Source #

Reset all elements of the vector to some undefined value, clearing all references to external objects. This is usually a noop for unboxed vectors.

# Zipping and unzipping

zip :: (Unbox a, Unbox b) => MVector s a -> MVector s b -> MVector s (a, b) Source #

*O(1)* Zip 2 vectors

zip3 :: (Unbox a, Unbox b, Unbox c) => MVector s a -> MVector s b -> MVector s c -> MVector s (a, b, c) Source #

*O(1)* Zip 3 vectors

zip4 :: (Unbox a, Unbox b, Unbox c, Unbox d) => MVector s a -> MVector s b -> MVector s c -> MVector s d -> MVector s (a, b, c, d) Source #

*O(1)* Zip 4 vectors

zip5 :: (Unbox a, Unbox b, Unbox c, Unbox d, Unbox e) => MVector s a -> MVector s b -> MVector s c -> MVector s d -> MVector s e -> MVector s (a, b, c, d, e) Source #

*O(1)* Zip 5 vectors

zip6 :: (Unbox a, Unbox b, Unbox c, Unbox d, Unbox e, Unbox f) => MVector s a -> MVector s b -> MVector s c -> MVector s d -> MVector s e -> MVector s f -> MVector s (a, b, c, d, e, f) Source #

*O(1)* Zip 6 vectors

unzip :: (Unbox a, Unbox b) => MVector s (a, b) -> (MVector s a, MVector s b) Source #

*O(1)* Unzip 2 vectors

unzip3 :: (Unbox a, Unbox b, Unbox c) => MVector s (a, b, c) -> (MVector s a, MVector s b, MVector s c) Source #

*O(1)* Unzip 3 vectors

unzip4 :: (Unbox a, Unbox b, Unbox c, Unbox d) => MVector s (a, b, c, d) -> (MVector s a, MVector s b, MVector s c, MVector s d) Source #

*O(1)* Unzip 4 vectors

unzip5 :: (Unbox a, Unbox b, Unbox c, Unbox d, Unbox e) => MVector s (a, b, c, d, e) -> (MVector s a, MVector s b, MVector s c, MVector s d, MVector s e) Source #

*O(1)* Unzip 5 vectors

unzip6 :: (Unbox a, Unbox b, Unbox c, Unbox d, Unbox e, Unbox f) => MVector s (a, b, c, d, e, f) -> (MVector s a, MVector s b, MVector s c, MVector s d, MVector s e, MVector s f) Source #

*O(1)* Unzip 6 vectors

# Accessing individual elements

read :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> Int -> m a Source #

Yield the element at the given position.

write :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> Int -> a -> m () Source #

Replace the element at the given position.

modify :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> (a -> a) -> Int -> m () Source #

Modify the element at the given position.

swap :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> Int -> Int -> m () Source #

Swap the elements at the given positions.

unsafeRead :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> Int -> m a Source #

Yield the element at the given position. No bounds checks are performed.

unsafeWrite :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> Int -> a -> m () Source #

Replace the element at the given position. No bounds checks are performed.

unsafeModify :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> (a -> a) -> Int -> m () Source #

Modify the element at the given position. No bounds checks are performed.

unsafeSwap :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> Int -> Int -> m () Source #

Swap the elements at the given positions. No bounds checks are performed.

# Modifying vectors

nextPermutation :: (PrimMonad m, Ord e, Unbox e) => MVector (PrimState m) e -> m Bool Source #

Compute the next (lexicographically) permutation of given vector in-place. Returns False when input is the last permtuation

## Filling and copying

set :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> a -> m () Source #

Set all elements of the vector to the given value.

Copy a vector. The two vectors must have the same length and may not overlap.

move :: (PrimMonad m, Unbox a) => MVector (PrimState m) a -> MVector (PrimState m) a -> m () Source #

Move the contents of a vector. The two vectors must have the same length.

If the vectors do not overlap, then this is equivalent to `copy`

.
Otherwise, the copying is performed as if the source vector were
copied to a temporary vector and then the temporary vector was copied
to the target vector.

Copy a vector. The two vectors must have the same length and may not overlap. This is not checked.

Move the contents of a vector. The two vectors must have the same length, but this is not checked.

If the vectors do not overlap, then this is equivalent to `unsafeCopy`

.
Otherwise, the copying is performed as if the source vector were
copied to a temporary vector and then the temporary vector was copied
to the target vector.