[Haskell-cafe] Re: I just don't get it (data structures and OO)
jmg at informatik.uni-kl.de
Wed Jun 6 04:41:16 EDT 2007
On 06.06.2007, at 07:00, Phlex wrote:
> So here is one more question :
> Let's say I want unique System names across the Universe ... that
> would mean i need to have a Data.Map in the Universe, with Name
> keys and System values. Since all data are values instead of
> references, would i end up with two copies of each System (in
> Universe's Data.Map and in its Galaxy), or would these be shared
> somehow ? In other words, should i go for integer (or maybe access
> key/tuple) identified objects or just put the System in both
> Data.Maps it belongs to ?
That depends. In an OO world everything has its own implicit
identity. The new operator in Java provides you with an object with a
new and unique key which is not easy to observe. But most formal
semantics have it. One can think of it as the address of the
In FP there are no objects, there are only terms. Whether two terms
are identically is answered by a structural traversal over the values
Now, I return to your question. What makes your "objects" galaxies,
planets, stars, etc. unique? Is it their coordinate in space, their
name, their structural position in your tree? What is it? Let's
assume you say their names are unique. Then you only have to store a
set of all names used in your universe.
If you want a planet which orbits around star "a" to be different
form another planet that is in orbit of star "b", although both
planets are the same in every other aspect. Then you might think
about introducing arbitrary unique integer keys.
This is similar to database design. There are those normal form laws
 which guide you to improve your db schema. In database design
there are people who introduce artificial primary keys almost always.
Although there are natural primary keys most of the time.
I hope these random thoughts help a bit to change the perspective.
More information about the Haskell-Cafe