Possible, yes. Advisable, no. There is no guarantee that the finaliser is ever run, they are expensive (since they need to be kept separately and checked after each GC) and there are easier methods. Lava [1] uses a very lightweight sharing detection mechanism. Depending on your problem you might also want to look at Oleg's approach to explicit sharing in a DSL [2].
[1]: http://www.cs.chalmers.se/~koen/Lava/papers.html [2]: http://www.mail-archive.com/[email protected]/msg37765.html 2008/11/26 Andrew Coppin <[EMAIL PROTECTED]>: > Here's an interesting question... Is it possible to attach finalisers to a > value? (That is, have some Haskell code executed when the item in question > is reclaimed by the GC.) I'm interested in knowing whether a particular data > structure is shared (i.e., whether it's safe to mutate it or whether it must > be copied first), and a simple reference-counting scheme looks like the > easiest option. > > _______________________________________________ > Haskell-Cafe mailing list > [email protected] > http://www.haskell.org/mailman/listinfo/haskell-cafe > -- Push the envelope. Watch it bend. _______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
