
Duncan Coutts wrote:
On Tue, 2008-08-26 at 15:31 -0700, Bryan O'Sullivan wrote:
On Tue, Aug 26, 2008 at 3:04 PM, Don Stewart
wrote: No, since I can get whnf with `seq`. However, that does sound like a good idea (a patch to the parallel library? )
I suspect that patching parallel doesn't scale. It doesn't have a maintainer, so it will be slow, and the package will end up dragging in everything under the sun if we centralise instances in there. I think that the instance belongs in bytestring instead. I know that this would make everything depend on parallel, but that doesn't seem as bad a problem.
This is a general problem we have with packages and instances. Perhaps in this specific case it wouldn't cause many problems to make bytestring depend on parallel (though it means bytestring cannot be a boot lib and cannot be used to implement basic IO) but in general it can be a problem. I can't see any obvious solutions. We don't want lots of tiny packages that just depend on two other packages and define a instance.
Just some raw ideas: What if we had a way to express 'optional dependencies' between packages in a cabal file. Something like 'if package x is installed (and satisfies given version constraints) then add module UseX'. One problem with this idea is that I might install the missing (optional) package afterwards, and then I still do not have the instance I would like (unless I re-build). Could cabal be instructed to re-build a package if an optional dependency becomes available (or if one gets removed)? Cheers Ben