unboxed-references: A library for reference cells backed by unboxed-vectors
This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.
This package contains an interface to references backed by unboxed vectors
For an example of how to use it:
module Main where
import Data.STRef.Unboxed
import Control.Monad.ST
main :: IO ()
main =
do
print counter
print mySum
print strictModify
-- |
-- Runs a for loop each time modifying the reference cell to add
-- one.
counter :: Int
counter =
runST $
do
ref <- newSTRefU 0
for_ [1..100] $ modifySTRefU ref (+ 1)
readSTRefU ref
-- |
-- Runs a for loop to add all the numbers between 1 and 10.
mySum :: Int
mySum =
runST $
do
ref <- newSTRefU 0
for_ [1..10] $ \i -> modifySTRefU ref (+ i)
readSTRefU ref
-- |
-- This shows that modifySTRefU is strict in its argument.
strictModify :: Int
strictModify =
runST $
do
ref <- newSTRefU 0
modifySTRefU ref (\_ -> Unsafe.unsafePerformIO $ print "Got here!" >> pure 10)
writeSTRefU ref 42
readSTRefU ref
This gives the following:
> main 100 55 "Got here!" 42
Properties
| Versions | 0.1.0, 0.1.0 |
|---|---|
| Change log | CHANGELOG.md |
| Dependencies | base (>=4.12.0.0 && <4.14), unboxed-references, vector (>=0.12.0 && <0.13) [details] |
| License | BSD-3-Clause |
| Copyright | 2019 |
| Author | Callan McGill |
| Maintainer | callan.mcgill@gmail.com |
| Category | Data |
| Home page | https://github.com/Boarders/unboxed-references |
| Bug tracker | https://github.com/Boarders/unboxed-references/issues |
| Source repo | head: git clone https://github.com/Boarders/unboxed-references |
| Uploaded | by callanmcgill at 2019-12-15T22:52:24Z |
Modules
[Index] [Quick Jump]
- Data
- STRef
Downloads
- unboxed-references-0.1.0.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
Package maintainers
For package maintainers and hackage trustees