According to a few articles I've read, cabal dependency hell is caused by installing packages with -o, which inlines code from dependant packages.
Why isn't this avoided by installing packages without inlining? Packages