Are fundeps the right model at all?

Tom Pledger
Mon, 8 Jan 2001 17:53:35 +1300

Marcin 'Qrczak' Kowalczyk writes:
 > Could somebody show an example which requires fundeps and cannot be
 > expressed using a simpler model explained below - a model that I
 > can even understand? Is the model self-consistent at all?
 [a model which uses key constraints instead of functional dependencies]


Try this:

    class C a b c | b -> c
    instance C t () t

Hugs rejects it.

If we try to express C with keys instead of fundeps, the key must
contain both a and b, which is equivalent to this:

    class C a b c | a b -> c
    instance C t () t

Hugs accepts this, but only because the constraint has been weakened
to something which can be expressed with keys.

It's quite a contrived example, and I'm not sure how it relates to
your later statement:

 > Having types with type variables which are never instantiated nor
 > constrained should be equivalent to having ground types!

Do you have any examples of such a type variable in an instance decl?
I'm having trouble imagining it, because I keep running into
unnecessary class parameters and overlapping instances.