I\'d like to create a function that wraps any arbitrary function, but keeps the same type for both the arguments and the result. For instance, this would be wrapping a function