type variables can be instantiated to different types in different circumstances
type variables can be instantiated to different types in different circumstances
h a function may be applied to any arguments whose types match a type expression involving type variables