> class Indexable idx a | idx -> a where > first :: idx -> a > > This just means that *a* is fully determined by idx (your tuple).
Cutting in to say thanks -- I've had a vague notion of what fundeps do but this really gelled it for me!