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