#6093: Kind polymorphism fails with recursive type definition using different 
kind
----------------------------------------+-----------------------------------
    Reporter:  Ashley Yakeley           |       Owner:                          
 
        Type:  bug                      |      Status:  new                     
 
    Priority:  normal                   |   Milestone:                          
 
   Component:  Compiler (Type checker)  |     Version:  7.4.1                   
 
    Keywords:                           |          Os:  Unknown/Multiple        
 
Architecture:  Unknown/Multiple         |     Failure:  GHC rejects valid 
program
  Difficulty:  Unknown                  |    Testcase:                          
 
   Blockedby:                           |    Blocking:                          
 
     Related:                           |  
----------------------------------------+-----------------------------------

Comment(by Ashley Yakeley):

 Just to be clear, IOWitness is also polykinded. (It has to be, so I can
 for instance represent "Maybe Bool".)

 {{{
 IOWitness : k -> *
 }}}

 So I think it should be this:

 {{{
 Type :: forall k. k -> *
   SimpleType :: forall k. forall (a:k). IOWitness k a -> Type k a
   ConstructedType :: forall k k2. forall (f:k2->k) (a:k2).
                      Type (k2->k) g -> Type k2 a -> Type k (f a)
 }}}

 This should be possible, should it not?

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

_______________________________________________
Glasgow-haskell-bugs mailing list
Glasgow-haskell-bugs@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs

Reply via email to