Вот это вообще боль. После окамла (на котором много лет программирую), в других языках именно модулей сильнее всего не хватает нормальных, которые с "дырками" и возможностью вычислить одни модули из других (включая типы). Обычно схожий эффект можно в других языках получить или наследованием, или динамическими интерфейсами, или лютой жестью с темплейтами (C++), но всё это как костыли ощущается, с менее статической и более протекающей абстракцией. Даже в Rust прогрессивный этого не завезли.