#4296: The dreaded SkolemOccurs problem
---------------------------------+------------------------------------------
    Reporter:  simonpj           |        Owner:                                
       
        Type:  bug               |       Status:  new                           
       
    Priority:  normal            |    Milestone:                                
       
   Component:  Compiler          |      Version:  6.12.3                        
       
    Keywords:                    |     Testcase:  
indexed-types/should_compile/Simple20
   Blockedby:                    |   Difficulty:                                
       
          Os:  Unknown/Multiple  |     Blocking:                                
       
Architecture:  Unknown/Multiple  |      Failure:  None/Unknown                  
       
---------------------------------+------------------------------------------
Description changed by simonpj:

Old description:

> The "!SkolemOccurs" problem is a celebrated difficulty with combining (a)
> termination and (b) completeness, in this example:
> {{{
> type instance F [a] = [F a]
> f :: (F [a] ~ a) => ...
> }}}
> Currently we err on the side of completeness, and lose termination.

New description:

 The "!SkolemOccurs" problem is a celebrated difficulty with combining (a)
 termination and (b) completeness, in this example:
 {{{
 type instance F [a] = [F a]
 f :: (F [a] ~ a) => ...
 }}}
 Currently we err on the side of completeness, and lose termination:
 {{{
 Simple20.hs:9:1:
     Context reduction stack overflow; size = 21
     Use -fcontext-stack=N to increase stack size to N
       co :: F [F (F (F (F (F (F (F (F (F (F a)))))))))]
               ~
             F (F (F (F (F (F (F (F (F (F a)))))))))
       co :: F (F (F (F (F (F (F (F (F a))))))))
               ~
             [F (F (F (F (F (F (F (F (F (F a)))))))))]
       co :: F [F (F (F (F (F (F (F (F (F a))))))))]
               ~
             F (F (F (F (F (F (F (F (F a))))))))
       co :: F (F (F (F (F (F (F (F a)))))))
               ~
             [F (F (F (F (F (F (F (F (F a))))))))]
       co :: F [F (F (F (F (F (F (F (F a)))))))]
               ~
             F (F (F (F (F (F (F (F a)))))))
       co :: F (F (F (F (F (F (F a))))))
               ~
             [F (F (F (F (F (F (F (F a)))))))]
       co :: F [F (F (F (F (F (F (F a))))))] ~ F (F (F (F (F (F (F a))))))
       co :: F (F (F (F (F (F a))))) ~ [F (F (F (F (F (F (F a))))))]
       co :: F [F (F (F (F (F (F a)))))] ~ F (F (F (F (F (F a)))))
       co :: F (F (F (F (F a)))) ~ [F (F (F (F (F (F a)))))]
       co :: F [F (F (F (F (F a))))] ~ F (F (F (F (F a))))
       co :: F (F (F (F a))) ~ [F (F (F (F (F a))))]
       co :: F [F (F (F (F a)))] ~ F (F (F (F a)))
       co :: F (F (F a)) ~ [F (F (F (F a)))]
       co :: F [F (F (F a))] ~ F (F (F a))
       co :: F (F a) ~ [F (F (F a))]
       co :: F [F (F a)] ~ F (F a)
       co :: F a ~ [F (F a)]
       co :: F [F a] ~ F a
       co :: a ~ [F a]
       co :: F [a] ~ a
 }}}

--

-- 
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/4296#comment:1>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs

Reply via email to