On Thu 27 Jan, Michael Hobbs wrote:
> My question is this:
> In the end, does it really make a difference whether or not we can
> successfully model I/O as being somehow referentially transparent?
I don't think it does, I prefer to think of world values, request/response
steams IO monads etc as nothing more than devices to sequence imperative
IO actions used in languages which (because of their declarative nature)
have no implicit sequencing.
> Can
> we pull out Occam's Razor[1] and simply cut referential transparency
> away from I/O and come out with a simpler model?
I don't know about simpler. More flexible perhaps. The reason I don't like
these ideas is that they seem to lock us into a deterministic execution
model. Some people have assured me that this isn't necessarily the case.
Maybe this is so, but it certainly seems to be true of both Clean &
Haskell at present. It isn't true of Concurrent Haskell, and I understand
the Clean Team are working on extensions to allow non-deterministic
concurrency.
BTW, was the debate re. pure functionality of Concurrent Haskell ever
resolved? (I think followers of the Clean list will remember this:-).
Regards
--
Adrian Hey