
Hi, Am Dienstag, den 29.11.2011, 10:36 +0200 schrieb Michael Snoyman:
On Tue, Nov 29, 2011 at 10:29 AM, Joachim Breitner
wrote: Am Dienstag, den 29.11.2011, 07:43 +0200 schrieb Michael Snoyman:
Since the release of deepseq 1.2, we've had a bit of a problem: when using the newest versions of packages on Hackage, there is no NFData instance available for the containers types. When GHC 7.4 comes out with its newer version of containers, this will be addressed, but we'll still have problems for users of older GHC releases.
I'd like to suggest a solution: a new package called containers-deepseq. Using conditional compilation, it will provide an orphans NFData instance for all containers types when deepseq >= 1.2 and containers < 0.5. Packages (e.g., aeson) would then depend on containers-deepseq and simply import the module whenever they rely on the NFData instances. When GHC 7.4 comes out, the package will essentially be a no-op.
Does this make sense?
from a distro point of view: Please void this if possible; every additional package causes us work. (Although we’d likely just not upgrade containers before 7.4.1 and patch out the dependency in the cabal file when we switch to 7.4.1.)
Why can’t you put the instances in containers, guarded by some #ifs? I don’t see the point of a separate package for these 15 lines of code.
Because containers cannot be updated: you're stuck with whatever version comes with GHC.
ah, I remember. Trying the same trick in deepseq is also not nice, because it would require a cabal-conditional dependency on containers, which would surely cause other problems. How about depending on (deepseq < 1.2 && containers < 0.5) || (deepseq >= 1.2 && containers >= 0.5) in a package that uses the NFData instances? Then cabal would figure out the right version of deepseq to use, based on the version of containers available (or at least I hope so). Gruß, Joachim -- Joachim "nomeata" Breitner mail@joachim-breitner.de | nomeata@debian.org | GPG: 0x4743206C xmpp: nomeata@joachim-breitner.de | http://www.joachim-breitner.de/