например
genNumber: (val >=0 & val <=10)
из этой функции вернется число в жиапазоне от 0 до 10
мм
ок
но
причем тут сгенеренный тип
и зачем его ручками писать, инфернуть никак низя что ли, зачем вербозность, зачем явно тип возращаемый писать?
и как ты будешь проверять сгенеренным типом что сама функция внутри возращает?
откуда val берется? с неба?