
2009/2/10 Joachim Breitner
Hi,
Am Montag, den 09.02.2009, 16:41 -0700 schrieb Luke Palmer:
2009/2/9 Joachim Breitner
Now while this works, and while ST is still somewhat pure, I'm wondering if there is no better way of expressing "This piece of information came from the point in a data structure, so something else can be put here easily". You might want to look into zippers: http://haskell.org/haskellwiki/Zipper
I thought about Zippers, but I understand that they improve _navigating_ in a Tree-like structure, or to refrence _one_ position in a tree.
But if I would deconstruct my tree to the list of _all_ locations, with
type Loc a = (Tree a, Cxt a) and then run my algorithm that returns [(Loc a, Info)], it's still not clear to me how I can combine all of these locations to get back my original Tree, annotated with the Info returned.
I guess I just repeat your last praragraph of your original mail but it seems to me you can mapAccump some 'names' on the tree, process an association list (or an IntMap) of the (name,log) then map the three again using the result. In spirits, it's the same thing than the STRef solution but it seems cleaner to me. Cheers, Thu