Reifying closed type families is broken
If I say
{-# LANGUAGE TemplateHaskell, TypeFamilies, PolyKinds #-}
module Scratch where
import Language.Haskell.TH
type family Foo a where
Foo x = x
$( do FamilyI foo [] <- reify ''Foo
runIO $ putStrLn $ show foo
return [] )
and compile, I see (with uniques suppressed)
ClosedTypeFamilyD Scratch.Foo
[KindedTV a (VarT k)]
(Just (AppT (AppT ArrowT (VarT k)) (VarT k)))
[TySynEqn [VarT k,VarT x] (VarT x)]
There are two problems here:
- The return kind (the third parameter to
ClosedTypeFamilyD
) should be just that -- the return kind. In the output, we see the full kind of the type family.k -> k
. - The equation includes the kind variable
k
, which should be implicit.
Trac metadata
Trac field | Value |
---|---|
Version | 7.8.1-rc2 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Template Haskell |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |