When libraries provide types for functions those
types are made instances of class Callback. That
class is used to exchange between Haskell functions
and a representation (i.e., a hidden pointer) that
can be used or is provided by foreign code.