the arguments and the result may be of different types