In general one must consider what are called
*di*natural transformations. (I ought to write a blog post about
this.)...but I thought I would mention it in case you want to look it up later.
Note that you can't always characterize a type class by a single
function like this. For example, consider class Foo ... There is no way to pick functors f and g such that a Foo dictionary is
equivalent to f a -> g a.
This doesn't really make sense. If a natural transformation
consists of a family of arrows which all live in Hask_T,