Interface for a mutable variable PVar that can hold values that have Prim instance.
| Language | Travis | Azure | Coveralls |
|---|---|---|---|
| Package | Hackage | Nightly | LTS |
|---|---|---|---|
pvar |
Main features include:
- Performance. There is practically no overhead when compared to operating on pure values,
although there is a higher memory overhead, since
PVaris backed by aMutableByteArray# - Atomic operations for
PVars withIntvalues. This includes a unique function that is not available inghc-primout of the box:
atomicModifyIntPVar :: PrimMonad m => PVar m Int -> (Int -> (Int, a)) -> m a- Works in
PrimMonad, therefore it is usable withST,IOand various transformer monads. - Easy access to
PVarcontents withStorable isByteArrayPinned,isMutableByteArrayPinnedfunction that work on ghc-7.10 and ghc-8.0 as well as all the newer ones.