
#11715: Constraint vs * -------------------------------------+------------------------------------- Reporter: bgamari | Owner: Type: bug | Status: new Priority: high | Milestone: 8.2.1 Component: Compiler (Type | Version: 8.0.1-rc1 checker) | Resolution: | Keywords: Typeable 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 int-index):
Algebraically, this is just the same as adding more constructors to `RuntimeRep`
Well, yes, but * you'd have to double the amount of constructors in `RuntimeRep` (coherent and incoherent version of each). * more importantly, you couldn't be parametric in `RuntimeRep` and non- parametric in `Coherency` or vice versa.
This new design does not solve the problem I outline at the end of comment:47 though.
Forgive my ignorance, but is it necessary to have the same `TYPE` in Core as is in surface syntax? Couldn't we just "forget" the coherency annotation everywhere and translate surface `TYPE :: Coherency -> RuntimeRep -> Type` to `TYPE :: RuntimeRep -> Type`? -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/11715#comment:54 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler