Have you considered computing a hash of the scene graph description (compositionally)? This gives you all the same advantages, including re-using shared subparts of the graph (which would be unlikely to stay around for very long as stable names).
Luke On Tue, Sep 1, 2009 at 11:02 AM, Peter Verswyvelen<bugf...@gmail.com> wrote: > I was planning to use them for caching OpenGL display lists and render > targets. These are generated from a pure scene graph description, and > if the same description is handed over to the render engine, it would > just reuse the previously cached OpenGL object. I can of course just > embedding and IORef inside the pure structures, that would also work I > guess > > > > > On Tue, Sep 1, 2009 at 6:09 PM, Job Vranish<jvran...@gmail.com> wrote: >> Well usually, when I've used stable names, I've just used them to check if >> things are the same, and then thrown them away. So no chance for a space >> leak. It's usually unsafe to keep stable names around for very long as they >> can lose their ability to tell if two things are the same (if this surprises >> you, you should carefully reread >> http://haskell.org/ghc/docs/latest/html/libraries/base/System-Mem-StableName.html#v%3AmakeStableName >> ). >> >> Out of curiosity, how are you planning on using them? > >> >> - Job >> >> On Tue, Sep 1, 2009 at 3:40 AM, Peter Verswyvelen <bugf...@gmail.com> wrote: >>> >>> but without that function, stable names are not that useful I guess? they >>> would cause a space leak? >>> On Mon, Aug 31, 2009 at 10:59 PM, Job Vranish <jvran...@gmail.com> wrote: >>>> >>>> I also would like a isStableNameTargetAlive function. >>>> Though if you had such a function then you probably _could_ make a >>>> deRefStableName function, which, since there isn't one, probably means that >>>> such a function would be hard to make. >>>> >>>> - Job >>>> >>>> On Sun, Aug 30, 2009 at 4:54 PM, Peter Verswyvelen <bugf...@gmail.com> >>>> wrote: >>>>> >>>>> >From the documentation, I don't think I grasp how stable names work. >>>>> From the docs: >>>>> "There is no deRefStableName operation. You can't get back from a stable >>>>> name to the original Haskell object. The reason for this is that the >>>>> existence of a stable name for an object does not guarantee the existence >>>>> of >>>>> the object itself; it can still be garbage collected." >>>>> From this I can conclude that stable names behave a bit like weak >>>>> pointers. >>>>> However, suppose I have a hash table of these stable names. How can I >>>>> remove the redundant stable names from the table? I mean removing stable >>>>> names that refer to an object that is garbage collected? I don't see any >>>>> function for checking that (e.g. isStableNameTargetAlive or something) >>>>> Thanks, >>>>> Peter >>>>> >>>>> >>>>> >>>>> >>>>> _______________________________________________ >>>>> Haskell-Cafe mailing list >>>>> Haskell-Cafe@haskell.org >>>>> http://www.haskell.org/mailman/listinfo/haskell-cafe >>>>> >>>> >>> >> >> > _______________________________________________ > Haskell-Cafe mailing list > Haskell-Cafe@haskell.org > http://www.haskell.org/mailman/listinfo/haskell-cafe > _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe