https://github.com/purescript/purescript-refs
Mutable value references
https://github.com/purescript/purescript-refs
Last synced: 21 days ago
JSON representation
Mutable value references
- Host: GitHub
- URL: https://github.com/purescript/purescript-refs
- Owner: purescript
- License: bsd-3-clause
- Created: 2014-03-19T22:12:38.000Z (almost 12 years ago)
- Default Branch: master
- Last Pushed: 2022-04-27T14:20:50.000Z (almost 4 years ago)
- Last Synced: 2025-11-30T04:48:18.933Z (3 months ago)
- Language: PureScript
- Homepage:
- Size: 56.6 KB
- Stars: 21
- Watchers: 5
- Forks: 21
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# purescript-refs
[](https://github.com/purescript/purescript-refs/releases)
[](https://github.com/purescript/purescript-refs/actions?query=workflow%3ACI+branch%3Amaster)
[](https://pursuit.purescript.org/packages/purescript-refs)
This module defines functions for working with mutable value references.
_Note_: [`Control.Monad.ST`](https://pursuit.purescript.org/packages/purescript-st/4.0.0/docs/Control.Monad.ST) provides a _safe_ alternative to `Ref` when mutation is restricted to a local scope.
## Installation
```
spago install refs
```
## Example
```purs
import Effect.Ref as Ref
main = do
-- initialize a new Ref with the value 0
ref <- Ref.new 0
-- read from it and check it
curr1 <- Ref.read ref
assertEqual { actual: curr1, expected: 0 }
-- write over the ref with 1
Ref.write 1 ref
-- now it is 1 when we read out the value
curr2 <- Ref.read ref
assertEqual { actual: curr2, expected: 1 }
-- modify it by adding 1 to the current state
Ref.modify_ (\s -> s + 1) ref
-- now it is 2 when we read out the value
curr3 <- Ref.read ref
assertEqual { actual: curr3, expected: 2 }
```
See [tests](test/Main.purs) to see usages.
## Documentation
Module documentation is [published on Pursuit](http://pursuit.purescript.org/packages/purescript-refs).