Using Set: Hypergraph type
Marcin 'Qrczak' Kowalczyk
qrczak@knm.org.pl
4 Sep 2001 20:19:26 GMT
Tue, 4 Sep 2001 21:12:41 +0300, Eray Ozkural <erayo@cs.bilkent.edu.tr> pisze:
> Thanks for the suggestion, but isn't this a bit inefficient? Ordinarily one
> would like to compare two elements of a set by reference, not by content.
There is no such thing in Haskell. mkSet [mkSet [1, 2]] is
indistinguishable from mkSet [mkSet [1, 2]] even if {1,2} sets
were created independently.
Whether representations of particular mkSet [1, 2] objects are shared
is an implementation detail.
Well, there are compiler-dependent unsafe functions which could detect
sharing, but they are not normally used. Functional programming is
about values, not about objects with identities.
You could implement a "tagged object" type, like
data Tagged a = Tagged Integer a
give objects unique numbers as they are created, and make Eq and Ord
instances which compare these numbers only, ignoring the real value.
--
__("< Marcin Kowalczyk * qrczak@knm.org.pl http://qrczak.ids.net.pl/
\__/
^^ SYGNATURA ZASTĘPCZA
QRCZAK