> But I know that I don't have any problem with modularity in other languages.
You want module extension. In fact, you have a module **A** with type X and a module **B** with a type Y and then you extend **A** with **B** that can be read as **A[B]** so you "plugged in" the B into the A. Now you can have access to both A[B].X and A[B].Y with the same object. You can find the feature everywhere, especially in languages that inherit from Java. This is a convenient feature and typically some runtime (virtual tables) is involved. The programmer is satisfied because of the convenience and thinks that it is "modular". However, If you want to do it efficiently, you have to recompile both A und B if you change one of them. So there is not much modularity here. But I think about **separate compilation**. We can automatize this (see post above) or we can do it with module descriptions like C++'s upcoming module feature. (They are a bit late....). So our focus is a bit different.
