On 2011 May 26, at 11:16, Christopher Done wrote:

On 26 May 2011 10:45, Jacek Generowicz <jacek.generow...@cern.ch> wrote:
What is the Haskell approach to efficient comparison and lookup of objects
by their identity?

Often you just provide your own and implement Eq.

I should be able to run the program on data that becomes available at run
time.

Typically you define an id generator and zip anything coming from the
input stream up with that generator.

Makes sense.

Whatever algorithm I choose to use for the optimization, will have to do lots of comparisons of Groups and Persons where their *identity* is all that
matters: you don't need to look inside the objects.

To achieve this abstraction the usual way is just implementing Eq:

instance Eq Person where
  Person{personId=id1} == Person{personId=id2} = id1 == id2

Any comments on the relative efficiency of the above as compared to

A == B in the context of

data Foo = A | B | C | D | ... lots more ...

?

(I imagine that a Sufficiently Smart Compiler could reduce (==) :: Person Person to just integer comparison.)

Thank you.


_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to