A function that takes a type and returns a function that does something on a generic type can be defined and implemented.
E.g. define a function reverse that takes a type, say String, and then returns a function that takes a list of strings and returns a list of strings, i.e. a function with the signature:
reverse: Type T -> f: List(T) -> List(T)