[Haskell-cafe] Destructive updates to plain ADTs

MigMit miguelimo38 at yandex.ru
Sun Sep 9 11:19:10 CEST 2012


Why modify it instead of creating the new one and let the previous tree get garbage collected?

On Sep 9, 2012, at 12:46 PM, Milan Straka <fox at ucw.cz> wrote:

> 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
> results.
> 
> Cheers,
> Milan
> 
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe




More information about the Haskell-Cafe mailing list