Смущен о подтипе функций
Я беру курс по языкам программирования и отвечаю на вопрос «когда функция является подтипом другой функции». это очень нелогично для меня.
Чтобы уточнить: предположим, что у нас есть следующее отношение типа:
bool<int<real
Почему функция(real->bool)
подтип(int->bool
)? Разве это не должно быть наоборот?
Я ожидаю, что критерии для функций подтипа будут такими: f1 является подтипом f2, если f2 может принимать любой аргумент, который может принимать f1, а f1 возвращает только значения, которые возвращает f2. Очевидно, что есть значения, которые может принимать f1, но f2 не может 't.