Portability | non-portable |
---|---|

Stability | experimental |

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

Safe Haskell | None |

Class of mutable vectors

- class MVector v a where
- basicLength :: v s a -> Int
- basicUnsafeSlice :: Int -> Int -> v s a -> v s a
- basicOverlaps :: v s a -> v s a -> Bool
- basicUnsafeNew :: PrimMonad m => Int -> m (v (PrimState m) a)
- basicUnsafeReplicate :: PrimMonad m => Int -> a -> m (v (PrimState m) a)
- basicUnsafeRead :: PrimMonad m => v (PrimState m) a -> Int -> m a
- basicUnsafeWrite :: PrimMonad m => v (PrimState m) a -> Int -> a -> m ()
- basicClear :: PrimMonad m => v (PrimState m) a -> m ()
- basicSet :: PrimMonad m => v (PrimState m) a -> a -> m ()
- basicUnsafeCopy :: PrimMonad m => v (PrimState m) a -> v (PrimState m) a -> m ()
- basicUnsafeMove :: PrimMonad m => v (PrimState m) a -> v (PrimState m) a -> m ()
- basicUnsafeGrow :: PrimMonad m => v (PrimState m) a -> Int -> m (v (PrimState m) a)

# Documentation

Class of mutable vectors parametrised with a primitive state token.

basicLength :: v s a -> IntSource

Length of the mutable vector. This method should not be
called directly, use `length`

instead.

Yield a part of the mutable vector without copying it. This method
should not be called directly, use `unsafeSlice`

instead.

basicOverlaps :: v s a -> v s a -> BoolSource

basicUnsafeNew :: PrimMonad m => Int -> m (v (PrimState m) a)Source

Create a mutable vector of the given length. This method should not be
called directly, use `unsafeNew`

instead.

basicUnsafeReplicate :: PrimMonad m => Int -> a -> m (v (PrimState m) a)Source

Create a mutable vector of the given length and fill it with an
initial value. This method should not be called directly, use
`replicate`

instead.

basicUnsafeRead :: PrimMonad m => v (PrimState m) a -> Int -> m aSource

Yield the element at the given position. This method should not be
called directly, use `unsafeRead`

instead.

basicUnsafeWrite :: PrimMonad m => v (PrimState m) a -> Int -> a -> m ()Source

Replace the element at the given position. This method should not be
called directly, use `unsafeWrite`

instead.

basicClear :: PrimMonad m => v (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. This method should not be called directly, use `clear`

instead.

basicSet :: PrimMonad m => v (PrimState m) a -> a -> m ()Source

Set all elements of the vector to the given value. This method should
not be called directly, use `set`

instead.

Copy a vector. The two vectors may not overlap. This method should not
be called directly, use `unsafeCopy`

instead.

Move the contents of a vector. The two vectors may overlap. This method
should not be called directly, use `unsafeMove`

instead.

basicUnsafeGrow :: PrimMonad m => v (PrimState m) a -> Int -> m (v (PrimState m) a)Source

Grow a vector by the given number of elements. This method should not be
called directly, use `unsafeGrow`

instead.

Prim a => MVector MVector a | |

Storable a => MVector MVector a | |

MVector MVector Bool | |

MVector MVector Char | |

MVector MVector Double | |

MVector MVector Float | |

MVector MVector Int | |

MVector MVector Int8 | |

MVector MVector Int16 | |

MVector MVector Int32 | |

MVector MVector Int64 | |

MVector MVector Word | |

MVector MVector Word8 | |

MVector MVector Word16 | |

MVector MVector Word32 | |

MVector MVector Word64 | |

MVector MVector () | |

MVector MVector a | |

(RealFloat a, Unbox a) => MVector MVector (Complex a) | |

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

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

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

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

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