
#8884: Reifying closed type families is broken -------------------------------------+------------------------------------ Reporter: goldfire | Owner: goldfire Type: bug | Status: merge Priority: normal | Milestone: 7.8.1 Component: Template Haskell | Version: 7.8.1-rc2 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Unknown/Multiple Type of failure: None/Unknown | Difficulty: Unknown Test Case: th/T8884 | Blocked By: Blocking: | Related Tickets: -------------------------------------+------------------------------------ Comment (by goldfire): Replying to [comment:4 carter]:
how would they even use the incorrect behavior constructively?
Note that the incorrect behavior applied to ''open'' type families as well as closed, so this isn't a new bug in 7.8. How could they use it constructively? Reifying a type family gives the list of arguments and the result kind. By counting the number of arguments, a program could remove the same number of arrows from the returned kind to get the actual result kind. It's not too hard, actually. As for the extra kind parameters, I suppose a program could do dependency analysis to discover which variables are kind variables and remove them. In any case, my library (a branch of `singletons`) was able to use the incorrect behavior without too much trouble (once we figured out what was going on), so there's an evidence proof for you. :) -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8884#comment:6 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler