[Haskell-cafe] Destructive updates to plain ADTs

Milan Straka fox at ucw.cz
Sun Sep 9 10:46:58 CEST 2012

Hi all,

is there any way to perform a destructive update on a plain ADT?
Imagine I have a simple
  data Tree a = Nil | Node a (Tree a) (Tree a)
I would like to be able to modify right subtree of an existing tree.

I can do that for example when using IORefs by changing the datatype to
  data Tree a = Nil | Node a (IORef (Tree a)) (IORef (Tree a))
and use unsafePerformIO + writeIORef. But the IORefs cause additional
complexity when working with the data type.

At the moment I am interested in any GHC solution, be it non-portable or
version specific. I would like just to run some benchmarks and see the


More information about the Haskell-Cafe mailing list