Confuso sobre a subtipagem de funções
Estou fazendo um curso sobre linguagens de programação e a resposta para "quando uma função é um sub-tipo de outra função" é muito contra-intuitiva para mim.
Para esclarecer: suponha que temos a seguinte relação de tipos:
bool<int<real
Por que a função(real->bool)
um subtipo de(int->bool
) Não deveria ser o contrário?
Eu esperaria que os critérios para as funções de sub-digitação fossem: f1 é um subtipo de f2 se f2 puder pegar qualquer argumento que f1 possa tomar, e f1 retorne apenas valores que f2 retorne. Existem claramente valores que f1 pode aceitar, mas f2 não pode.