GHC.Exe Panic (The 'Impossible' happened)
Unfortunately, I am just learning Haskell, so I do not have the context to narrow this down to a narrow repro.
Console Output:
PS C:\Haskell> ghc -o creditCard .\CreditCards.hs [1 of 1] Compiling Main ( CreditCards.hs, Credit ghc.exe: panic! (the 'impossible' happened)
(GHC version 8.0.2 for x86_64-unknown-mingw32):
initTc: unsolved constraints WC {wc_insol = [W] n_a1PN :: t_a1PM[tau:1] (CHoleCan: n)}
CreditCards.hs
-- Converts a number to digits
toDigits :: Integer -> [Integer]
toDigits n
| n <= 0 = []
| otherwise = n `mod` 10 : toDigits (n `div` 10)
-- Converts a number to digits and then reverses it
toDigitsRev :: Integer -> [Integer]
toDigitsRev n = reverse . toDigits n
-- Doubles every other value
doubleEveryOther :: [Integer] -> [Integer]
doubleEveryOther[] = []
doubleEveryOther ([x:[]]) = [x]
doubleEveryOther (x : y : zs) = x : 2 * y : doubleEveryOther zs
-- Sums the digits of the credit card.
sumDigits :: [Integer] -> [Integer]
sumDigits [] = 0
sumDigits (x:xs)
| x < 10 = x + sumDigits xs
| otherwise = (x `mod` 10) + (x `div` 10) + sumDigits xs
--- Inidicates whether the credit card is valid.
validate :: [Integer] -> Bool
validate x = (sumDigits (doubleEveryOther (toDigitsRev n)) `mod` 10) == 0
Trac metadata
| Trac field | Value |
|---|---|
| Version | 8.2.1 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture |