[GHC] #11011: Add type-indexed type representations (`TypeRep a`)

GHC ghc-devs at haskell.org
Mon Feb 1 14:23:01 UTC 2016


#11011: Add type-indexed type representations (`TypeRep a`)
-------------------------------------+-------------------------------------
        Reporter:  bjmprice          |                Owner:
            Type:  feature request   |               Status:  new
        Priority:  normal            |            Milestone:
       Component:  Compiler          |              Version:
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  None/Unknown      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by goldfire):

 Replying to [comment:14 bgamari]:

 >  * The solver now preserves enough information to construct these
 representations. This took a bit of gymnastics due to the recursive kind
 relations of `(->)`, `TYPE`, and `Levity`. These representations are
 handled as a bit of a special case. I need to

 [sic] Ooh. It's like a mystery novel. Perhaps having a type-safe language
 with both `* :: *` and self-reflective type representations shows that
 math is actually inconsistent and opened up a hole in spacetime through
 which bgamari has exited. :) I do hope that's not the case.

 Other points:

 * I vote only pattern synonyms.
 * Serialization is used in Cloud Haskell, no?
 * I like the idea of including the paranoid checks as an option for
 paranoid users. Although perhaps not, given that I believe it's likelier
 for a cosmic ray to flip a bit than for the fingerprints to give a false
 positive.

 As for names: I think a proper migration story needs to be articulated. In
 a few years, I'd hate to have all these extra `T`s lying around. Use a new
 module name for the new features and keep the old module with the old
 interface around? Maybe the new module can be `Data.Reflection`.

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/11011#comment:16>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list