[GHC] #7961: Remove restrictions on promoting GADT's

GHC ghc-devs at haskell.org
Wed Jun 5 04:37:20 CEST 2013


#7961: Remove restrictions on promoting GADT's
-----------------------------+----------------------------------------------
Reporter:  danharaj          |          Owner:                  
    Type:  feature request   |         Status:  new             
Priority:  normal            |      Component:  Compiler        
 Version:  7.6.3             |       Keywords:                  
      Os:  Unknown/Multiple  |   Architecture:  Unknown/Multiple
 Failure:  None/Unknown      |      Blockedby:                  
Blocking:                    |        Related:  #6204           
-----------------------------+----------------------------------------------
 (Also allow the promotion of data types whose kind is not (* -> ... -> *))

 I have been using -XDataKinds lately to explore the sorts of dependently
 typed programming that are currently possible in GHC. I am particularly
 interested in DSL's and embedding other languages' type systems into
 Haskell so that GHC can help verify the correctness of the program
 fragments I construct for those languages. From my point of view as an
 end-user, the restrictions on what data get promoted is inconsistent and
 oftentimes annoying to deal with. There are two related issues on my end:

 1. The restriction that a data type cannot have a kind mentioning a
 promoted kind means that the way I stratify my type machinery impacts
 whether or not GHC will promote everything as I would like.

 2. The inability to use promoted GADT's forces me to encode relationships
 between my type building blocks in trickier ways, and sometimes I am
 simply unable to come up with an alternative.

 I have found that these issues get in my way as a programmer of modest
 skill. Oftentimes I will explore a particular design but be forced to
 abandon it because my "natural" line of reasoning runs into GHC's
 restrictions. With sufficient cleverness you can do quite a lot of
 impressive stuff with the current system, but I am often not sufficiently
 clever nor am I equipped to determine when something is outright
 ''impossible''.

 Lifting these restriction, from ''my'' point of view, would simplify the
 machinery a great deal and allow me to do type-level programming that is
 currently out of my reach. It would make the kind extensions more uniform
 and more complete to us end-users. #6204 would complete them in another
 way.

-- 
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/7961>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler



More information about the ghc-tickets mailing list