Monad classes using functional dependencies
