John Meacham wrote:
On Thu, Apr 27, 2006 at 11:09:58AM +0100, Adrian Hey wrote:
What really frustrates me about all this is that AFAIK there are no
significant technical or theoretical reasons why we can't get
this safety (without resort to the unsafePerformIO hack). The
only serious obstacle seems political, with this very strange but
apparently widespread dogma about so called "global variables"
being inherently evil, regardless of the circumstances or purpose
for which they are used.

indeed. perhaps we just need to come up with a more functional name
than 'global variables'. like 'universal monad' or 'world
transformer', maybe 'augmented IO'. :)

I like "augmented IO", because this makes it clear that there is absolutely no difference between the existing IO monad which keeps track of global RealWorld state, and an augmented IO monad which keeps track of RealWorld + state of IORefs needed internally by different components of a software system.

At the moment, there is a strange unnatural discrepancy between the fixed set of built-in privileged operations such as newUnique which are "allowed" to make use of global state and user defined operations which have to rely on a shaky hack in order to preserve natural abstraction barriers between components such as a user-defined Unique, Atom, and anything involving memoisation or device management etc.

Regards, Brian.
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to