On Sat, Aug 15, 2009 at 11:54 PM, John A. De Goes <j...@n-brain.net> wrote:
> On Aug 14, 2009, at 9:34 PM, Sebastian Sylvan wrote: > > On Sat, Aug 15, 2009 at 3:55 AM, John A. De Goes <j...@n-brain.net> wrote: >> >> If you don't like the file system, consider mutable memory. An effect >> system will tell me I can safely update two pieces of non-overlapping, >> contiguous memory concurrently, even in different threads if the complexity >> so justifies it. > > > I'd like to point out that this relaxation of sequencing for memory > operations is already in effect in C on many CPUs. Even though you write > things sequentially, it doesn't actually happen sequentially unless you > explicitly say so with memory barriers. This causes massive head-aches and > horrible bugs that are almost impossible to track down whenever you actually > do depend on the order (usually in multi-threading scenarios, e.g. lockless > data structures). > > > That's because C has no effect system and is too low-level for an effect > system. That's no argument against one in a high-level language similar in > syntax to Haskell. > ... > > Your point about safety in C has no relation to safety in a functional > language with a sophisticated effect system. > I'm sorry, but I think it does. You're advocating that modifications to mutable state shouldn't have sequential semantics, I'm pointing out that this is the case today in C on many CPUs and it's a royal pain to work with in practice (causing many almost-impossible-to-debug crashes). I would not want functional languages to adopt something that's proven to be insanity-inducingly difficult to use. -- Sebastian Sylvan
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe