
The `(#,#)` type constructor takes 4 arguments, `(r1 :: RuntimeRep)`, `(r2 :: RuntimeRep)`, `(a :: TYPE r1)`, and `(b :: TYPE r2)`. Because
#12976: GHCi displays the kinds of unboxed tuples incorrectly -------------------------------------+------------------------------------- Reporter: RyanGlScott | Owner: Type: bug | Status: closed Priority: normal | Milestone: Component: GHCi | Version: 8.0.2 Resolution: invalid | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: Other | Test Case: Blocked By: | Blocking: Related Tickets: #12985 | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Changes (by RyanGlScott): * status: new => closed * resolution: => invalid * related: => #12985 Comment: Replying to [comment:4 goldfire]: there is no type-level lambda, it ''must'' take these arguments in order. So we cannot supply the third argument (the `Int#` in the `(#,#) Int#` case) without supplying the second. Initially, this second argument is a unification variable, but this gets defaulted to `PtrRepLifted` before printing.
Does that explain it?
Now it makes sense! Thanks. I'm a bit saddened that we apparently don't have a way to make `(#,#) Int# :: forall (r2 :: RuntimeRep). TYPE r2 -> TYPE 'UnboxedTupleRep`, but maybe that problem will be fixed once we have visible kind applications (#12045).
And I have no idea what's going on with TH. That looks like a separate ticket to me.
OK. I've opened #12985 specifically to address that issue. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/12976#comment:5 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler