global-variables / global-variables.cabal

Name:               global-variables

Synopsis:           Namespaced, global, and top-level mutable variables without


  'Data.Global' provides a global namespace of 'IORef's, 'MVar's and
  'TVar's. This namespace may be accessed in pure code. Yet reading
  and writing to those 'IORef's, 'MVar's and 'TVar's 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
    * 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".
   Version History:
   . added declareEmptyMVar and widened the stm dependency
   1.0: First public release

License:            BSD3
License-file:       LICENSE
Author:             Jean-Marie Gaillourdet and Patrick Michel
Maintainer:         Jean-Marie Gaillourdet <>
Copyright:          2011 Jean-Marie Gaillourdet
Stability:          stable

Category:           Data, Reflection

Build-type:         Simple

Tested-With:        GHC == 7.0.4, GHC == 7.2.2
-- Extra files to be distributed with the package, such as examples or
-- a README.
-- Extra-source-files:

Cabal-version:      >=1.6

  Exposed-modules:  Data.Global
  Hs-Source-Dirs:   src

  Build-depends:      base >= 4 && < 5
                    , containers >= 0.3 && < 0.5
                    , stm >= 2.1 && < 2.3

  Other-modules:    Data.Global.Registry

  Ghc-Options:      -Wall

Source-Repository   head
  Type:             mercurial
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.