For IORefs in the Haskell programming language, and their explicitly monadic equivalents in other programming languages
An IORef - originally defined in the Haskell programming language - is a reference in the runtime to a value, which can be modified any number of times at runtime.
It is closely related to mutable variables, but because IORefs are always mutated within the IO monad, in Haskell at least, type-safety of the programming language ensures that IORefs cannot be modified by pure functions (unless unsafePerformIO
or similar unsafe functions are called).