А
Поэтому мы не можем говорить о каком-то сравнении, когда у нас нет возможности сравнивать. Это фундаментальная проблема. Чтобы выбирать - нужно иметь возможность выбирать. Если её нет, то любой выбор не более чем необходимость, а всё остальное - оправдание. И неважно правильный он или нет - он в любом случае обусловлен не этим.
По поводу контракта. Здесь всё не совсем так. Именно функция описывает свой контракт, той логикой что в ней описано - это набор операций. Это тот самый структурный подход. И ей абсолютно неважно какие там типы, какие входы, какие операции. Как эти операции определены для типов.
. Именно функция описывает свой контракт, той логикой что в ней описано - это набор операций.
Мои поздравления. Ты потерял возможность описать контракт функции, тебе каждый раз придётся в код лезть.