gluon 0.18.2

A static, type inferred programming language for application embedding
Documentation
//! A mutable reference type

let reference @ { Reference } = import! std.reference.prim
let { flat_map } = import! std.monad

let { IO, ? } = import! std.io.base

#[infix(right, 9)]
let (<-) = reference.(<-)

let modify r f : Reference a -> (a -> a) -> IO () =
    do x = reference.load r
    r <- f x
{
    Reference,
    (<-),
    modify,
    ..
    reference
}