Andrew,
As for concrete suggestions... I've always thought we could do more
to use static information about the program to aid runtime GC. It's
no deep secret that destructive updates are essentially like a
compile-time / coding-time GC operation. You determine before
runtime that the old version of the data will never be needed again,
and hence update it in-place. Making this kind of thing more
automatic could be interesting theoretically and practically.
[Warning: shameless plug follows.]
Have you had a look at our 2008 PEPM paper?
Jurriaan Hage and Stefan Holdermans. Heap recyling for lazy
languages.
In John Hatcliff, Robert Glück, and Oege de Moor, editors,
Proceedings
of the 2008 ACM SIGPLAN Symposium on Partial Evaluation and
Semantics-
Based Program Manipulation, PEPM 2008, San Francisco, California,
USA,
January 7–8, 2008, pages 189–197. ACM Press, 2008.
http://people.cs.uu.nl/stefan/pubs/hage08heap.html
As far as automatic detection of opportunities for in-place updates is
concerned, the Clean compiler seems to do some interesting things.
http://clean.cs.ru.nl/
I am not quite sure whether the details (a formal semantics, for
example) have ever been published. I would be very much interested in
such a description myself, actually, so if someone knows of any...
Cheers,
Stefan_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe