> You know about fundeps, right? This may help: > > class Add a b c | a b -> c where {add :: a -> b -> c;}; Indeed, it's quite hopeless without fundeps. They don't solve with the ambiguous-literal problem, though. mike