История изменений
Исправление crutch_master, (текущая версия) :
Например, в языках со статической типизацией можно делать собственные типы, объединяющие нужные (union в Си) или использовать контейнеры (std::variant в С++), или есть встроенные в язык (тип variant в паскале). Таким образом получаешь нужный тип в рантайме с полным контролем над вариантами обработки
Да это не типы. Это всё ковыряние иголкой в жопе. Они ничего не решают. Тебе надо сделать типы вроде {int от 10 до 90}, чтобы он работал и всё вокруг работало. А твой ст это не умеет из коробки. И сделать ничего вменяемого ты не можешь. Потому что, например, сложение двух таких переменных даст тебе {int от 20 до 180} + любые типы входящие в этот диапазон. И я не представляю, как ты будешь выводить это на твоём ст язычке типа сисярп/жабки.
Или вот, например, элементарное uint8 sum(uint8 a, uint8 b)
просто не работает в общем случае, не смотря на то, что ст язычок что-то там типа гарантирует. И про какую вы там типизацию рассказываете? Где она?
Исправление crutch_master, :
Например, в языках со статической типизацией можно делать собственные типы, объединяющие нужные (union в Си) или использовать контейнеры (std::variant в С++), или есть встроенные в язык (тип variant в паскале). Таким образом получаешь нужный тип в рантайме с полным контролем над вариантами обработки
Да это не типы. Это всё ковыряние иголкой в жопе. Они ничего не решают. Тебе надо сделать типы вроде {int от 10 до 90}, чтобы он работал и всё вокруг работало. А твой ст это не умеет из коробки. И сделать ничего вменяемого ты не можешь. Потому что, например, сложение двух таких переменных даст тебе {int от 20 до 180} + любые типы входящие в этот диапазон. И я не представляю, как ты будешь выводить это на твоём ст язычке типа сисярп/жабки.
Или вот, например, элементарное uint8 sum(uint8 a, uint8 b)
просто не работает в общем случае, не смотря на то, что ст язычок что-то там типа гарантирует.
Исправление crutch_master, :
Например, в языках со статической типизацией можно делать собственные типы, объединяющие нужные (union в Си) или использовать контейнеры (std::variant в С++), или есть встроенные в язык (тип variant в паскале). Таким образом получаешь нужный тип в рантайме с полным контролем над вариантами обработки
Да это не типы. Это всё ковыряние иголкой в жопе. Они ничего не решают. Тебе надо сделать типы вроде {int от 10 до 90}, чтобы он работал и всё вокруг работало. А твой ст это не умеет из коробки. И сделать ничего вменяемого ты не можешь. Потому что, например, сложение двух таких переменных даст тебе {int от 20 до 180} + любые типы входящие в этот диапазон. И я не представляю, как ты будешь выводить это на твоём ст язычке типа сисярп/жабки.
Исходная версия crutch_master, :
Например, в языках со статической типизацией можно делать собственные типы, объединяющие нужные (union в Си) или использовать контейнеры (std::variant в С++), или есть встроенные в язык (тип variant в паскале). Таким образом получаешь нужный тип в рантайме с полным контролем над вариантами обработки
Да это не типы. Это всё ковыряние иголкой в жопе. Они ничего не решают. Тебе надо сделать типы вроде {int от 10 до 90}, чтобы он работал и всё вокруг работало. А твой ст это не умеет из коробки. И сделать ничего вменяемого ты не можешь. Потому что, например сложение двух таких переменных даст тебе {int от 20 до 180} + любые типы входящие в этот диапазон. И я не представляю, как ты будешь выводить это на твоём ст язычке типа сисярп/жабки.