This module defines functions for working with mutable value references.
Note: Control.Monad.ST
provides a safe alternative to Ref
when mutation is restricted to a local scope.
spago install refs
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 to see usages.
Module documentation is published on Pursuit.