On Aug 15, 2009, at 5:32 PM, Sebastian Sylvan wrote:
On Sun, Aug 16, 2009 at 12:18 AM, John A. De Goes
<john@n-brain.net> wrote:
You must think I'm arguing for some kind of low-level analog of C, augmented with an effect system. I'm not. You can't do that.
No, I don't. I think you're arguing for making access to mutable state commutative. Are you not?
There are many cases when mutation to state _is_ commutative. I can't argue that certain operations are _always_ commutative without talking about the language.
Pretend I'm arguing for a mostly functional language and effect system that maximize the opportunities for parallelizing code.
I'm not saying you shouldn't parallelise them in very specific circumstances *where it's safe*, I'm just saying that you shouldn't assume that it's safe unless you know it is. If you want to do a transformation that's unsafe in general, but safe in a specific circumstance, then of course, go ahead!
To my reading it seems like you're arguing that memory/file access should *always* be considered commutative though, which is what I'm objecting too.
In the right language, many times of memory (and possibly file) operations _always_ commute. In the wrong language, they _sometimes_ commute or _never_ provably commute. I'm not arguing for the assumption in any language where it is false.