
On Sat, 4 Dec 2010, Mark Lentczner wrote:
I'm not being dense here. I understand the implications of such a choice in a library. But I can easily imagine libraries where the developers will decide to offer slightly different APIs on different platforms, Since we have template haskell and cpp preprocessing available, these scenarios will arise.
Unfortunately it happened too often already. Especially if a package depends on user flags, the importer of that package has no chance to find out, what API of the actual installation of the package is. I have written this into http://www.haskell.org/haskellwiki/Cabal/Developer-FAQ#Enabling_additional_f... Given the problems people already have with Cabal and conflicting versions, I really really plead for simple packages. One package for each task. If a package can be compiled on different platforms, that's great. But it should provide a unified API in order to simplify the work for other package authors.