Version control systems

Malcolm Wallace malcolm.wallace at
Wed Aug 13 06:21:53 EDT 2008

> - Why does NHC98 break so often? Is it because people are checking in
> code that is not Haskell 98 compatible?

Yes, there is a bit of that.  Also, as you point out, there is quite a  
lot of CPP conditionally compiled code in the libraries, and I would  
say that it is the major contributor to breakage.  It is often unclear  
which parts of the code are shared and which separate, so a lot of  
breakage arises from e.g. exporting a name that is defined for ghc only.

In addition, there are some (once obscure) bugs in nhc98 that are now  
triggered increasingly frequently.  (We can't blame anyone except  
nhc98 for those of course.)  These include complex import renaming  
resolution, and contexts on pattern variables.

> - It seems to me that implementations "share" libraries using CPP.
> That seems like a bad approach to me.

Agreed.  The CPP was always intended to be as temporary as possible,  
with the goal to share as much as possible.  One of the problems is  
that the primitives provided by compilers are different.  Really,  
there should be a package below 'base' in the dependency tree,  
specific to each compiler, and non-shared.  Then everything from base  
upwards would be cleaner and more portable.

> If it's so difficult to share code without continuously breaking the
> build then we're better of keeping the code separate.

I don't agree.  The only way to achieve convergence is to start from  
some semi-merged point, and work to eliminate the differences.  Igloo  
is doing a fantastic job of determining the dependencies and gradually  
moving stuff around to enable this to happen.


More information about the Glasgow-haskell-users mailing list