Then you should produce 'some canonical representation for database entries suited for comparison', like Stefan mentioned. For example:

> data Entry = forall a. (DatabaseEntry a) => Entry a
>
> instance DatabaseEntry Entry where
>    entryLabel (Entry e) = entryLabel e
>    formatEntry (Entry e) = formatEntry e
> compareEntries (Entry x) (Entry y) = compare (entryLabel x) (entryLabel y)

Gerrit

Max Vasin wrote:

"Geest," == Geest, G van den <[EMAIL PROTECTED]> writes:

Geest,> I suppose you want to define compareEntries like this:
compareEntries (Entry x) (Entry y) = compareEntries x y

Geest,> An option is to just implement it the following way
Geest,> (Haskell98!):

class DatabaseEntry e where entryLabel :: e -> String formatEntry
:: e -> String compareEntries :: e -> e -> Ordering

data Entry a = Entry a

No. I don't want that. The database parsing function returns
Map.Map String Entry but entries can of different types (and
these type vary over styles).


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

Reply via email to