S. Günther wrote: >> >> Whether circular or not, sharing values by using a "back pointer" is >> problematic for any update. Why not use a zipper instead? > > I looked into zippers before and the problem I had was that they never > really matched the structure which I needed and which led me to think > about this whole knot tying thing again.
What kind of structure do you need exactly? > The things I read about them > always assumed either a list like (i.e. linear) or a tree like (i.e. existence > of a root) structure on the type to be plugged into the zipper. Viewing the zipper as the derivative of a data type opens up more possibilities. That being said, every algebraic data types has a tree-like structure. The extra invariants like left . right = right . left that the programmer imposes are what make them different from trees. > So I just have to decide whether to use IORefs/Vars (clunky) > or to implement zippers for the structure I need (probably too hard for me). It's not too hard for you. You've got a whole haskell-cafe and #haskell at your fingertips, after all. ;) Regards, H. Apfelmus _______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
