Skip to content

Using GADT's to maintain invariant in GHC libraries

I rewrote compiler/utils/OrdList.lhs using a GADT to preserve some invariants stated only in comments — an excellent chance for ghc to eat its own proverbial dog food I feel :)

The type signatures remain the same so it should be a drop-in replacement but it does use some GHC features that are too recent (closed type families in particular, the IsList instance can be removed) making it ineligible for inclusion I believe.

hvr on #ghc suggested that I submit a patch anyway and that it could be implemented at a later date (they said ghc must be able to be compiled by the last two previous major versions), if this is useful then I will translate Bag.hls which has the same invariants but more complicated functions.

Trac metadata
Trac field Value
Version 7.9
Type Task
TypeOfFailure OtherFailure
Priority lowest
Resolution Unresolved
Component Compiler
Test case
Differential revisions
BlockedBy
Related
Blocking
CC
Operating system
Architecture
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information