Re: Suggestion for module system (to get rid of many uses of unsafePerformIO)

2007-05-23 Thread Adrian Hey

Stephen Dolan wrote:


At the moment,
we have the situation of modules using unsafePerformIO newIORef, which
influences program behaviour without being referenced by main.


Not really. Even with things as they currently are, if we have at the
top level..

resultOfSomething = unsafePerformIO doSomething

.. laziness will ensure that nothing will happen unless the value
resultOfSomething is demanded (by main ultimately).

Of course, this does not imply the above hack is at all safe.

Regards
--
Adrian Hey


___
Haskell-prime mailing list
Haskell-prime@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-prime


Re: [Haskell-cafe] global variables

2007-05-23 Thread Taral

On 5/23/07, Adrian Hey <[EMAIL PROTECTED]> wrote:

I think I still prefer..

var :: IORef Int
var <- newIORef 3


So do I. For one very good reason: this syntax could be defined as a
"constructor" syntax and guaranteed to run before main.

The other syntaxes proposed don't strike me as sufficiently rigorous.

--
Taral <[EMAIL PROTECTED]>
"Please let me know if there's any further trouble I can give you."
   -- Unknown
___
Haskell-prime mailing list
Haskell-prime@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-prime


Re: Suggestion for module system (to get rid of many uses of unsafePerformIO)

2007-05-23 Thread Stephen Dolan

I think what you're describing seems to be so completely different
from Haskell as it is now that that people either don't understand
it, or they do understand it and do think it's downright silly, but
are just too polite to say that. Maybe you should try writing it up
in a more comprehensible form on a Haskell wiki page.


Yeah, that certainly wasn't my most readable piece of writing.



I would say that I get worried when people talk about "module
initialisation" and/or (potentially) side effecting imports. I'm
not sure if this is a problem with what you're proposing, but
I think it's important that we don't get into a situation where
the mere presence or absence of some definition in a module can
influence program behaviour, even if it isn't referenced by main
somehow.


No, the point of what I was proposing was that, when a module requires
side-effecting initialisation, it would have to be imported inside a
do block like any other side-effecting piece of code. At the moment,
we have the situation of modules using unsafePerformIO newIORef, which
influences program behaviour without being referenced by main. If the
import statement was inside a do block, it would be clear when the
side-effects are taking place.

Regards,
Stephen Dolan
___
Haskell-prime mailing list
Haskell-prime@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-prime


Re: Suggestion for module system (to get rid of many uses of unsafePerformIO)

2007-05-23 Thread Adrian Hey

Stephen Dolan wrote:


Would this be useful, useless, or just downright silly?


The silence is deafening :-)

I think what you're describing seems to be so completely different
from Haskell as it is now that that people either don't understand
it, or they do understand it and do think it's downright silly, but
are just too polite to say that. Maybe you should try writing it up
in a more comprehensible form on a Haskell wiki page.

I would say that I get worried when people talk about "module
initialisation" and/or (potentially) side effecting imports. I'm
not sure if this is a problem with what you're proposing, but
I think it's important that we don't get into a situation where
the mere presence or absence of some definition in a module can
influence program behaviour, even if it isn't referenced by main
somehow.

Regards
--
Adrian Hey






___
Haskell-prime mailing list
Haskell-prime@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-prime