This is a clarification of a closed question. I've limited the scope as requested.
First, a few definitions, following e.g. A modular module system. Consider any programming language with a selected subtheory of its native type theory. Let a signature be two collections of named types, allowing for polymorphism; the first collection is the imports (also called the givens) and the second collection is the exports (also confusingly called the module type.) A ML-style module is a collection of named sentences in the language which can be judged to have the same types as the exports when in the context of values with the same types as the imports. A ML-style functor is an ML-style module whose imports include module types; the imports and exports of one module are among the imports to another module.
Given all of this, we'll say that a language admits ML-style modules when we can choose a type theory such that its ML-style modules and ML-style functors form a category, we can embed that category in the language's original syntax, and:
- there is an initial object (an empty signature)
- there are subobjects (the LSP always holds)
Finally, we'll say that an ML-style package is a named collection of ML-style modules. Packages do not need to obey any compositional rules; they do not have type signatures.
For example, most flavors of ML admit ML-style modules, including SML, OCaml, and ATS. Haskell can do it with Backpack, and Racket can do it with units. Additionally, languages like ECMAScript and Java can be restricted to admit ML-style modules using their existing module systems.
Suppose that a programming language admits ML-style modules, but its ecosystem does not have ML-style packages. Which software engineering tasks -- if any -- are expensive or impossible without packages?