Дано две функции:
f :: EvenInteger -> {0}
g :: OddInteger -> {1}
рассмотрим функцию
h = (x :: Integer) => {
if(x is even)return f(x);
return g(x);
}
Какой самый маленький тип Т такой, что
h :: T
Я думал, что это просто
h :: (typeof f) & (typeof g)
Но тогда я бы также подумал, что вызов функции распределяется по соединению, т.е.
x :: EvenInteger
h(x) :: (typeof f(x)) & (typeof g(x))
, который вызывает другой вопрос:
Что такое
(OddInteger -> {1})(EvenInteger)