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.