Functional Dependencies
class Collection c a | c -> a where
- Declares that c determines a: there can be only one instance for each type c.
- Helps the type-checker resolve ambiguities (tremendously).
add x (add y empty) -- x and y must be the same type.