"This interface says that for some two types, A and B, there is a function (called f) that takes an A and returns a B. When you implement this interface, A and B can be any types you want, as long as you provide a function f that takes the former and returns the latter." . . . . .