@hackage global-variables1.0
Namespaced, global, and top-level mutable variables without unsafePerformIO.
Categories
License
BSD-3-Clause
Maintainer
Jean-Marie Gaillourdet <jmg@gaillourdet.net>
Links
Versions
Installation
Dependencies (3)
- base >=4 && <5
- containers >=0.3 && <0.5
- stm >=2.1 && <2.2 Show all…
Dependents (3)
@hackage/global-config, @hackage/acme-everything, @hackage/spike
Data.Global provides a global namespace of IORefs, MVars and
TVars. This namespace may be accessed in pure code. Yet reading
and writing to those IORefs, MVars and TVars happens still in
their respective monads.
Data.Global is designed to meet the following use cases:
Simplify the declaration of top-level mutable variables, by avoiding any pragmas as well as
unsafePerformIO.Avoid having to pass references explicitly throughout the program in order to let distant parts communicate.
Enable a communication by convention scheme, where e.g. different libraries may communicate without code dependencies.
Simplify the "configuration problem" - at least for code in the IO monad.
Note, that this library does not encourage sloppy software design
by re-introducing all bad effects of global
variables. Nevertheless, sometimes global variables are a suitable
solution to a problem. In that case Data.Global simplifies and
extends their handling significantly.
Examples are in the documentation of Data.Global.