Fri Oct 28 13:47:56 EDT 2011

Functional Dependencies

Main idea is that multi-param type classes are relations = sets of
tuples, and can be seen as relational databases.

The basic problem with multi-param type classes is ambiguity.  When
composing operations, it might be that some type parameters that are
in the constraints no longer appear in the right hand side.  I.e.

       TypeRel a b c => a -> b

Here 'c' is ambiguous.  See [1] section 2.4 for examples.

[1] http://www.reddit.com/r/haskell/comments/7oyg5/ask_haskellreddit_can_someone_explain_the_use_of/