It seems to me that specifying and solving module dependencies is a
ubiquitous problem in software development.
All the languages that I know try to make the problem go away by using
version numbers and maximizing backward compatibility.
Does anyone know of references that formalize this problem for Haskell?
PS: keep in mind that even the most elaborated versioned
dependency mechanism is just a work-around - as long as
we don't have *all* software properties in the types.
Only then could we have a formal proof
that a module A can use module B2 instead of module B1, etc.
And, we do not "just" want correctness w.r.t. a specification,
but also resource consumption.