Library for handling global entities.
A global entity has a name declared in the program.
Its value can be accessed and modified by IO actions.
Furthermore, global entities can be declared as persistent so that
their values are stored across different program executions.

Currently, it is still experimental so that its interface might
be slightly changed in the future.

A global entity g
with an initial value v
of type t
must be declared by:

g :: Global t
g = global v spec

Here, the type t
must not contain type variables and
spec
specifies the storage mechanism for the
global entity (see type GlobalSpec).

Author: Michael Hanus

Version: February 2017

Summary of exported operations:

global
:: a -> GlobalSpec -> Global aglobal is only used for the declaration of a global value
and should not be used elsewhere.