I believe from the book or the video that classes are, as types, inferred.

For example, in exercise 2 the type double accept a Num a class constraint as argument; it's unclear if it is inferred from the operator * , the number 2 or both.

How does it work effectively?