deriving Show, impossible happened
Here's the program (note the missing "deriving Show" clause on the Succ data type)...
data Succ a = S a
data Seq' a = Cons' a (Seq' (Succ a)) | Nil' deriving Show
- ..and here's the error message for 'ghci -fglasgow-exts -fallow-undecidable-instances foo.hs'...
___ ___ _
/ _ \ /\ /\/ __(_)
/ /_\// /_/ / / | | GHC Interactive, version 6.6, for Haskell 98.
/ /_\\/ __ / /___| | http://www.haskell.org/ghc/
\____/\/ /_/\____/|_| Type :? for help.
Loading package base ... linking ... done.
ghc-6.6: panic! (the 'impossible' happened)
(GHC version 6.6 for i386-unknown-linux):
solveDerivEqns: probable loop
(main:Main.$f1{v rLa} base:GHC.Show.Show{tc 2h} main:Main.Seq'{tc rFH} [a{tv aFR} [tv]] = [base:GHC.Show.Show{tc 2h} a{tv aFR} [tv],
base:GHC.Show.Show{tc 2h} (main:Main.Seq'{tc rFH} (main:Main.Succ{tc rFN} a{tv aFR} [tv]))])
[[base:GHC.Show.Show{tc 2h} a{tv aFR} [tv],
base:GHC.Show.Show{tc 2h} (main:Main.Succ{tc rFN} a{tv aFR} [tv]),
base:GHC.Show.Show{tc 2h} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} a{tv aFR} [tv])),
base:GHC.Show.Show{tc 2h} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} a{tv aFR} [tv]))),
base:GHC.Show.Show{tc 2h} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} a{tv aFR} [tv])))),
base:GHC.Show.Show{tc 2h} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} a{tv aFR} [tv]))))),
base:GHC.Show.Show{tc 2h} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} a{tv aFR} [tv])))))),
base:GHC.Show.Show{tc 2h} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} a{tv aFR} [tv]))))))),
base:GHC.Show.Show{tc 2h} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} a{tv aFR} [tv])))))))),
base:GHC.Show.Show{tc 2h} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} a{tv aFR} [tv]))))))))),
base:GHC.Show.Show{tc 2h} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} a{tv aFR} [tv])))))))))),
base:GHC.Show.Show{tc 2h} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} a{tv aFR} [tv]))))))))))),
base:GHC.Show.Show{tc 2h} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} a{tv aFR} [tv])))))))))))),
base:GHC.Show.Show{tc 2h} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} a{tv aFR} [tv]))))))))))))),
base:GHC.Show.Show{tc 2h} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} a{tv aFR} [tv])))))))))))))),
base:GHC.Show.Show{tc 2h} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} a{tv aFR} [tv]))))))))))))))),
base:GHC.Show.Show{tc 2h} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} a{tv aFR} [tv])))))))))))))))),
base:GHC.Show.Show{tc 2h} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} a{tv aFR} [tv]))))))))))))))))),
base:GHC.Show.Show{tc 2h} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} a{tv aFR} [tv])))))))))))))))))),
base:GHC.Show.Show{tc 2h} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} (main:Main.Succ{tc rFN} a{tv aFR} [tv])))))))))))))))))))]]
Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug
Trac metadata
| Trac field | Value |
|---|---|
| Version | 6.6 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | GHCi |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | greg@sleepingsquirrel.org |
| Operating system | |
| Architecture |