At Wed, 4 Jul 2012 09:06:32 -0700, KC wrote: > you can turn the flag off when you are ready to do the computational > heavy lifting so that you don't have to modify your code base? > > That is, GHC can then apply its algebraic transformation > optimizations to the "code algebra" of the pure functions.
What do you mean "allow mutable top level state"? As in > import Foreign.Ptr > import Foreign.StablePtr > import Foreign.Storable > import System.IO.Unsafe > > destructiveUpdate :: Storable a => a -> a -> () > destructiveUpdate x y = > unsafePerformIO $ do ptr <- newStablePtr x > poke (castPtr (castStablePtrToPtr ptr)) y > freeStablePtr ptr ? The only problem that the above function does not work - you can't poke or peek off StablePtrs. If that's what you mean, no. And I doubt it'll ever exist, since it breaks the most important invariant in Haskell - that is, that values don't change. An Haskell compiler will rely on this assumption quite heavily, so changes to that are likely to disrupt things seriously. Also, I don't see how destructive updates help debugging. -- Francesco * Often in error, never in doubt _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe