global

Library enabling unique top-level declarations

https://github.com/bairyn/global

Latest on Hackage:0.2.1.0

This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow stackage.org to host generated Haddocks.

BSD-3-Clause licensed by Byron James Johnson
Maintained by [email protected]

The "global" library enables the declaration of unique top-level declarations, including references to mutable state accessible via IO.

Conceptually, this library defines primitive means of unique declarations, whose internal implementation is hidden from users, and uses Template Haskell to provide a public interface. Thus, it is not necessarily portable across various implementations. It is currently designed to be compatible with GHC. Users do not need to be aware of the internal, low-level implementation; if a more portable, stable means of providing the same functionality becomes available, the library can be updated without changing the provided public interface.

While this library provides the basis for an alternative approach to managing state, users should consider using instead the transformers library's StateT transformer, possibly accompanied with fclabels to manage hierarchical state (libraries that provide a higher-level means of managing monad stacks based on transformers include mtl, monads-tf, and monad-operations). This library might be more appropriately used for other purposes, such as to provide a means to directly translate C to Haskell with a result whose style more closely resembles that of the original code. Users should also consider using the language feature ImplicitParams.

Examples of small programs that use this library are provided in the repository in which it resides.