On Wed, 9 Jan 2008, David Roundy wrote: > On Jan 9, 2008 4:21 PM, Don Stewart <[EMAIL PROTECTED]> wrote: > > anton: > > > OTOH, the freedom to change things on the fly can be nice to have, and > > > if used with "great responsibility" (mainly an understanding of what's > > > safe to do and what isn't), the downside can be vanishingly small. > > > > It can be small, unless you need to have any kind of static assurance > > (say for high assurance software, or for new kinds of optimisations, or > > if you want to reorder code in the compiler for parallelism). > > > > Then the downside to arbitrary, untracked effects in the system is huge. > > I just want to point out that unsafePerformIO is at the core of the > (safe) bytestring library. As SPJ et al pointed out, this is crucial > functionality, and is only unsafe if unsafely used.
Indeed, there are hacks and they are some times necessary. The good thing about Haskell is, that hacks look like hacks. In Modula-3 modules using hacks must be explicitly marked as UNSAFE. See http://www.cs.purdue.edu/homes/hosking/m3/reference/unsafe.html Maybe this is also an option for Haskell? Wouldn't this also simplify http://www.haskell.org/haskellwiki/Safely_running_untrusted_Haskell_code ? _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe