Commits

Jean-Marie Gaillourdet committed 43f9a03

Edited online

  • Participants
  • Parent commits 2540453

Comments (0)

Files changed (1)

-== Welcome ==
+== global-variables ==
 
-Welcome to your wiki! This is the default page we've installed for your convenience. Go ahead and edit it.
+Namespaced, global, and top-level mutable variables without unsafePerformIO.
 
-=== Wiki features ===
+'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 dependencies.
+ 
+ * Simplify the \"configuration problem\" - at least for code in the
+   IO monad.
 
-This wiki uses the [[http://www.wikicreole.org/|Creole]] syntax, and is fully compatible with the 1.0 specification.
+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.
 
-The wiki itself is actually a hg repository, which means you can clone it, edit it locally/offline, add images or any other file type, and push it back to us. It will be live immediately.
+Examples are in the documentation of "Data.Global".
 
-Go ahead and try:
 
-{{{
-$ hg clone http://bitbucket.org/jmg/glovar/wiki
-}}}
-
-Wiki pages are normal files, with the .wiki extension. You can edit them locally, as well as creating new ones.
-
-=== Syntax highlighting ===
-
-You can also highlight snippets of text, we use the excellent [[http://www.pygments.org/|Pygments]] library.
-
-Here's an example of some Python code:
-
-{{{
-#!python
-
-def wiki_rocks(text):
-	formatter = lambda t: "funky"+t
-	return formatter(text)
-}}}
-
-You can check out the source of this page to see how that's done, and make sure to bookmark [[http://pygments.org/docs/lexers/|the vast library of Pygment lexers]], we accept the 'short name' or the 'mimetype' of anything in there.
-
-Have fun!