[GHC] #12088: Type/data family instances in kind checking
GHC
ghc-devs at haskell.org
Fri Sep 23 18:57:26 UTC 2016
#12088: Type/data family instances in kind checking
-------------------------------------+-------------------------------------
Reporter: alexvieth | Owner:
Type: bug | Status: new
Priority: high | Milestone: 8.2.1
Component: Compiler (Type | Version: 8.1
checker) |
Resolution: | Keywords: TypeInType
Operating System: Unknown/Multiple | Architecture:
Type of failure: GHC rejects | Unknown/Multiple
valid program | Test Case:
Blocked By: | Blocking:
Related Tickets: #11348, #12239 | Differential Rev(s): Phab:D2272
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by simonpj):
RE comment:25:
* I have no idea how to actually implement this idea. Type constructors,
axioms, etc have no late-bound holes in them and it would be
architeturally difficult to change that, becuase they are all tied
together so they point to each other in a graph. Difficult to update.
* More seriously, I do not know whother the resulting system would be
sound. The kinding of one instance depends on executing another instance;
and vice versat. At at minimum I'd want to see a ''specification'' in
langauge that a type-theory person could understand, and a sketch proof of
soundness.
* Stephanie Weirich and Ricahrd Eisenberg are world experts of this stuff.
We sat down and ICFP and made zero progress. That doesn't mean that no
progress is possible; but it does mean that it's premature to implement
anything until we undersatnd the theory.
* It's important to bre able to explain to programmers exactly what will
kind-check and what will not. The fact that the implementation is already
jolly tricky, and yet does not do the job, is a worry. Making it much
more complicated still feels wrong to me.
Better to withdraw to something that is (a) simple to explain and (b)
simple to implement. That leaves a clear research challenge for some
research student to tackle.
> I appreciate that, at the term level, I don't need to worry about the
order of my definitions.
I agree. But I don't know anything better. If Ricahrd gets his way,
thing will happen at the term level, when typing `f` requires executing
`g` anf vice versa. Except it's worse at the type level becaues of open
type families.
I specualte that you'll never need a phasing annotation if you only need
closed type families. Maybe that's why this issue doesn't show up for
Coq, Agda etc?
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/12088#comment:32>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list