DDC compiler and effects; better than Haskell? (was Re: [Haskell-cafe] unsafeDestructiveAssign?)

John A. De Goes john at n-brain.net
Fri Aug 14 16:41:45 EDT 2009

Hmmm, my point (perhaps I wasn't clear), is that different effects  
have different commutability properties. In the case of a file system,  
you can commute two sequential reads from two different files. This  
has no effect on the result of the computation, assuming no  
interference from other programs -- and if there _is_ interference  
from other programs, then guarantees go out the window, _with or  
without_ commuting.

Monads are an insufficient structure to capture the fine semantics of  
effects. Something more powerful is needed. And in general, the way  
effects combine and commute is quite complicated and needs to be baked  
into the effect system, rather than being the responsibility of a  
lowly developer.


John A. De Goes
N-Brain, Inc.
The Evolution of Collaboration

http://www.n-brain.net    |    877-376-2724 x 101

On Aug 13, 2009, at 12:24 PM, Sebastian Sylvan wrote:

> On Thu, Aug 13, 2009 at 2:19 PM, John A. De Goes <john at n-brain.net>  
> wrote:
>> What if you have another program, written in C or something, that  
>> monitors a file for changes, and if so changes the contents of  
>> another file? Surely to catch that you must mark *all* file system  
>> access as "interefering"? Even worse, another program could monitor  
>> the state of a file and conditionally disable thet network driver,  
>> now file access interferes with network access.
> A compiler or runtime system can't know about these kinds of things  
> -- unless perhaps you push the effect system into the operating  
> system (interesting idea). The best you can do is ensure the program  
> itself is correct in the absence of interference from other programs
> I think the best you can do is make sure any code which is  
> vulnerable to such interference won't be subject to unsafe  
> transformations (like changing the order of evaluation).
> So I do think pretty much anything that relies on the outside world  
> needs to go into one big effects "category" so the compiler/runtime  
> will "stay out" and let the programmer explicitly define the  
> ordering of those operations, precisely because the compiler has no  
> way of knowing anything about what kind of assumptions are in effect.
> -- 
> Sebastian Sylvan

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20090814/e1be189e/attachment.html

More information about the Haskell-Cafe mailing list