А теперь объясняю на пальцах. Допустим у нас есть некий код:
foo = let a = 10 in a
Итак, давайте подумаем какой тип у переменной a. Вспомним определение типа: тип - это множество значений, которые принимает переменная. Посмотрим на пример. Логично предположить, что a имеет тип { 10 }. Но! Она имеет тип Int. То есть компилятор на полном серьезе считает что 'а' может быть в данном случае -268. Поразительно, не правда ли?
в данном случае тип 10, да, и тебе приходится изза несовершенства языков откатываться к динамике увеличивая возможные варианты до инта
ты снова ошибаешься говоря что расстояние от 10 до инта такой же огромное как и расстояние от инта до Option<Int> или int| float или UserModel vs user_id