На самом деле, простые дженерики не что-то столь сложное/плохое, чтобы идеологически их избегать. Если базовая система типов и сущностей у языка простая, то и метасредства типа параметризации дженериков над ними очень простые. (И наоборот).

Просто для системного программирования и научно-инженерных задач, для которых применяли сами разработчики типа Ominc, это не было сильно актуально (случаи типа перегрузки операторов над разными полями чисел оставим студентам, в реально серьёзных задачах эти игрушки мало что дают).

А в задачи обработки данных типа веба, где без стандартных контейнеров туго, швейцарцы не влезали. Так что всерьёз некоторыми задачами развития языка в эту сторону никто не занимался.

Проблема там есть одна: сопрячь это идейно и технически с динамической загрузкой и раздельной компиляцией.
Не будем забывать, что в том же Go это потеряно относительно Оберона, там нужен глобальный анализ.

Подробнее для автора вопроса:https://oberoncore.ru/_media/library/sz ... ystems.pdf
Со страницы 20 PDF-а (с. 6 печатная).