joeyh

joeyh at

Haskell libraries have some other problematic bits beyond the common issues with dependency management.

One is the diamond dependency issue; it's possible for two dependency chains to pull in conflicting versions of a library. I've seen this happen with C libraries as well, but it's less common there.

Another interesting thing is that due to strong static typing, it's common to make breaking changes in haskell libraries, where other libraries would go out of their way not to. This is often a good thing, it avoids bad choices being locked in. But, it means there's a constant level of churn to keep up with if you want to keep using current versions of libraries.

Curated sets of libraries seem like the only available solution to these problems so far. Either stackage, or nix, or debian have self-consistent sets of libraries, with varying levels of coverage and up-to-dateness.