по большому счету это всё assert входных и выходных данных. Да , это можно запихнуть в сигнатуру типа, и WeirdRange или что-то на его основе могут с этим справиться, если есть такое желание
Только то что ты предложил это неудобно из-за бойлерплейта
Несмотря на возможность допилить язык так, чтобы в сигнатуре типов можно было писать всякую функциональщину, тебе не нравится что этого изначально нет в языке, а допиливание ты называешь бойлерплейтом
Несмотря на возможность допилить язык так, чтобы в сигнатуре типов можно было писать всякую функциональщину, тебе не нравится что этого изначально нет в языке, а допиливание ты называешь бойлерплейтом
ну генерики через compiletime-выражения там есть даже в стандартной библиотеке, а тип WeirdRange ты сам поставил как условие, естественно в жизни таким в нефункциональных языках не пользуются