
#9429: Alternative to type family Any -------------------------------------+------------------------------------- Reporter: mboes | Owner: Type: feature | Status: new request | Milestone: Priority: normal | Version: 7.9 Component: Compiler | Keywords: Resolution: | Architecture: Unknown/Multiple Operating System: | Difficulty: Unknown Unknown/Multiple | Blocked By: Type of failure: | Related Tickets: 9097, 9380 None/Unknown | Test Case: | Blocking: | Differential Revisions: | -------------------------------------+------------------------------------- Comment (by mboes): Hm, perhaps I was a bit too hasty about the "inhabiting only open kinds" criterion as being sufficient for safety. In #9380, we have a GADT indexed by types in a closed kind. But the breaking test case exposed there would break just as well with an open kind, I think. The problem is that GHC chooses `Any` as an arbitrary instantiation for some unbound type variable appearing in the type index of the GADT, which then leads GHC to wrongly identify some alternatives as being "unreachable" in case analyses. Therefore, the second solution in the description of this ticket would still have problems with GADT's. I guess my point is that while the `Any` that GHC uses to silently instantiate things during type checking should be well behaved, clearly, there could be an `UnsafeAny`, similar to the old `Any`, for certain targeted use cases such as obtaining the `TypeRep` of a polymorphic type with no type families. For polymorphic types where there ''might'' be occurrences of type families, I so no other solution but to somehow make the `Any`-the-type-family `Typeable` somehow. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9429#comment:5 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler