Koen Claessen wrote:

For the past couple of years, I have been quietly hacking on a brand new
version of QuickCheck with lots of cool features. I have been
distributing copies to some friends, but have not released any official
package.

Now, after lots of peer pressure, the time has come that I want to
release the current version as a Cabal package.

I have been agonizing however over where in the module hierarchy the new
QuickCheck package should be.

There is currently an old QuickCheck version in the standard hierarchy
in Test.QuickCheck. As the new QuickCheck is incompatible with the old
one, I do not want to override that place. Rather, I would like to
create my own little space in the hierarchy where the new version can
sit and develop.

It feels to me that there should be a convention that people use to add
their own contributions to the module hierarchy without the danger of
clashing with other packages.

Proposals:

  Contrib.Chalmers.QuickCheck
  External.Chalmers.QuickCheck
  Chalmers.QuickCheck
  Contrib.Test.QuickCheck
  Contrib.QuickCheck

If you intend the new version as a replacement for the old, then it should be called Test.QuickCheck, and the package should identify itself as a newer version (2.0, or whatever). It's possible to have multiple versions of a package simultaneously installed (at least with GHC). Currently it isn't possible to use them both in the same program, but we intend to allow that in the future.

If you have both QuickCheck-1.0 and QuickCheck-2.0 installed, typically the new one will be the default, and the old one will be available if you explcitly say '-package QuickCheck-1.0', or if you specify a dependency on QuickCheck-1.0 in a .cabal file.

Frederik mentioned "mounting", a concept which is also known as "grafting", which would allow you the user to move modules around in the hierarchy, and it would free the package author from deciding once and for all what absolute module names to use. This is the direction we plan to go in for GHC, I'm not sure when it will happen though.

Cheers,
        Simon
_______________________________________________
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell

Reply via email to