
Yeah, I also believed that, but then I'm confused: Don Stewart wrote:
That's a reasonable critique : its hard to enforce uniqueness, in the type system in Haskell, -- I'd be interesting to see approaches that avoid extending the compiler.
Neil Mitchell wrote:
No. The monad and the primitive operations ensure it is unique, the IO monad is abstracted away properly, and it all works neatly so you can't violate the uniqueness.
So monads *do* enforce uniqueness... So what is the difference between Haskell's monad approach and Clean's uniqueness typing? I always thought these were just two different ways to tackle the same problem, and I had the feeling Haskell's approach was actually more general. Thanks, Peter
-----Original Message----- From: Neil Mitchell [mailto:ndmitchell@gmail.com] Sent: Wednesday, February 06, 2008 6:25 PM To: Peter Verswyvelen Cc: Don Stewart; Jeff φ; haskell-cafe@haskell.org Subject: Re: [Haskell-cafe] Mutable arrays
Hi
Isn't the compiler already "modified" in a way to deal with the RealWorld type that is used in the IO monad? Surely the RealWorld is unique...
No. The monad and the primitive operations ensure it is unique, the IO monad is abstracted away properly, and it all works neatly so you can't violate the uniqueness. However, the realWorld thing is not actually unique, for example unsafeInterleaveIO and unsafePerformIO violate this.
Thanks
Neil
-- No virus found in this incoming message. Checked by AVG Free Edition. Version: 7.5.516 / Virus Database: 269.19.20/1261 - Release Date: 2/5/2008 8:57 PM