On Tuesday 30 Nov 2004 12:53 pm, George Russell wrote:
> Adrian Hey wrote (snipped):
>  > They are for use in situations where you need to represent
>  > state associated with a genuinely unique resource (eg top level
>  > stateful C library or hardware IO device).
>
> In my experience this is only true quite rarely.

Well it's true there probably aren't many people actually writing
hardware device drivers in Haskell at the moment, but it is
something that should be possible to do safely.

But the case of C libraries is far more typical at the moment
I think. Hardly any (like none that I have ever used) can be safely
used without precautions which require top level mutable state,
one way or another. 

> I think Keean and Lennart
> have already said most of what I have to say here.

Oh no, not you as well :-). As I observed in an earlier post,
you still have the same basic problem even if you a multiple
but finite supply of these resources. The problem is slightly
different, but is still insoluble without top level TWIs.

Keean and Lennart are just hiding the problem in a hypothetical
"operating system" which is simply assumed to be correct (it just
doesn't do any of the dangerous things that might otherwise be done).

I don't dispute that top level TWIs are arguably unnecessary, in the
sense that there's no *program* that can be written with them that
couldn't be written without them (in principle).

The issue is *modularity*. Without top level TWIs there are certain
safety guarantees that I cannot make from within my module. Instead
I have to "beg" for safe use from outside my module. Begging a
hypothetical "operating system" doesn't really help much.

Regards
--
Adrian Hey

_______________________________________________
Haskell-Cafe mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to