Phlex: > Hello all, > > I'm coming from the OO world, and there's something i don't quite > understand in the way haskellers manipulate data (as all functional > programmers i guess). > > Let's say i have a deep nested data structure. > Universe containing galaxies, containing solar systems, containing > planets, containing countries, containing inhabitants, containing > ...whatever. > > Using the OO paradigm, once i get a reference to an inhabitant, i can > update it quite easily (say by changing it's age), and that's the end of it. > > On the other side, using the functional paradigm, it seems to me that > the function i use in order to create a _new_ inhabitant with a > different age will need to have knowledge of the country over it, the > planet ..and so on up to the universe...as i need to update all these > structures to reflect the change. This is pretty bad and most probably > doesn't need to be like this. > > So here I am hoping for you all to give me some pointers on how this is > done "the functional way". >
Nope, its not done like that. You share as much of the original structure as you can, as a general principle. Imagine updating a node in a tree by just detaching and reattaching a pointer. [1] [1] / \ / \ [2] [3] update node 5 [2] [3] / \ with value 7 / \ [4] [5] [4] * and share the rest of the structure. Since the rest isn't mutable anyway, you can share all over. -- Don _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe