Skip to content

Some type families don't reduce with :kind!

Sadly, I'm unable to reproduce this without singletons. :(

Observe:

> ghci
GHCi, version 7.10.2: http://www.haskell.org/ghc/  :? for help
Prelude> import Data.Promotion.Prelude   -- singletons-2.0.1
Prelude Data.Promotion.Prelude> :kind! Lookup 'True '[ '(True, True) ]
Lookup 'True '[ '(True, True) ] :: Maybe Bool
= Data.Singletons.Prelude.List.Case_1628035408
    'True
    'True
    'True
    '[]
    (Data.Singletons.Apply (Data.Singletons.Apply (:==$) 'True) 'True)
Prelude Data.Promotion.Prelude> :kind! Lookup 'True '[ '(True, True) ]
Lookup 'True '[ '(True, True) ] :: Maybe Bool
= JustSym1 'True

Note that the exact same command run twice yields different results. I tried peeking at -ddump-tc-trace but got nothing of use.

Trac metadata
Trac field Value
Version 7.10.2
Type Bug
TypeOfFailure OtherFailure
Priority normal
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