Skip to content

hackage's type-level-0.2.4 fails to compile

Attached trimmed-down dependencyless archive. Steps to reproduce:

$ tar -xzf type-level-0.2.4.tar.gz
$ ghci -hide-all-packages -package=base -package=template-haskell Data/TypeLevel.hs

The error on 7.8.2 and in -HEAD is:

[6 of 8] Compiling Data.TypeLevel.Num.Ops ( Data/TypeLevel/Num/Ops.hs, interpreted )

Data/TypeLevel/Num/Ops.hs:90:10:
    Illegal instance declaration for ‘Succ' (x, x) (x, x) D0 D0 True’
      The liberal coverage condition fails in class ‘Succ'’
        for functional dependency: ‘yh yl yz -> xh xl’
      Reason: lhs types ‘D0’, ‘D0’, ‘True’
        do not jointly determine rhs types ‘(x, x)’, ‘(x, x)’
    In the instance declaration for ‘Succ' (x, x) (x, x) D0 D0 True’
...

Typechecked fine on ghc-7.6.3

[1 of 8] Compiling Data.TypeLevel.Num.Reps ( Data/TypeLevel/Num/Reps.hs, interpreted )
[2 of 8] Compiling Data.TypeLevel.Num.Sets ( Data/TypeLevel/Num/Sets.hs, interpreted )
[3 of 8] Compiling Data.TypeLevel.Num.Aliases.TH ( Data/TypeLevel/Num/Aliases/TH.hs, interpreted )
[4 of 8] Compiling Data.TypeLevel.Num.Aliases ( Data/TypeLevel/Num/Aliases.hs, interpreted )
Generating and compiling a zillion numerical type aliases, this might take a while
[5 of 8] Compiling Data.TypeLevel.Bool ( Data/TypeLevel/Bool.hs, interpreted )
[6 of 8] Compiling Data.TypeLevel.Num.Ops ( Data/TypeLevel/Num/Ops.hs, interpreted )
[7 of 8] Compiling Data.TypeLevel.Num ( Data/TypeLevel/Num.hs, interpreted )
[8 of 8] Compiling Data.TypeLevel   ( Data/TypeLevel.hs, interpreted )
Ok, modules loaded: Data.TypeLevel, Data.TypeLevel.Num, Data.TypeLevel.Bool, Data.TypeLevel.Num.Reps, Data.TypeLevel.Num.Aliases, Data.TypeLevel.Num.Sets, Data.TypeLevel.Num.Ops, Data.TypeLevel.Num.Aliases.TH.
*Data.TypeLevel>

I have failed to decipher an error message, but looks like it tries to instantiate a thing it should not.

My apologies if it's not-a-bug.

Trac metadata
Trac field Value
Version 7.8.2
Type Bug
TypeOfFailure OtherFailure
Priority normal
Resolution Unresolved
Component Compiler (Type checker)
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