Programming with SML "in the very large" is still cumbersome. Although tooling in the form of ML basis files and smackage helps, those tools aren't standard and they only provide assistance at the tooling level rather than the language level.
Here are a few motivating examples where SML currently falls short:
-
if I want to consume a 3rd party library, it hopefully uses a compatible build mechanism. Additionally, a library that uses mlbasis files doesn't necessarily have a "default" basis file. e.g. even if I consume a library like cmyacc via smackage I have to rely on convention and depend on the cmyacc.mlb file.
-
how do teams of engineers within a company compose a working system. Since mlbasis files are a source level dependency mechanism, the consumers of a library end up depending on all signatures and structures with no separation between the modules that belong to the public interface and the modules that belong to the implementation.