[GHC] #13417: piResultTys1

GHC ghc-devs at haskell.org
Tue Mar 14 11:34:52 UTC 2017


#13417: piResultTys1
-------------------------------------+-------------------------------------
        Reporter:  ralf              |                Owner:  (none)
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:
       Component:  Compiler          |              Version:  8.0.2
      Resolution:                    |             Keywords:
Operating System:  Linux             |         Architecture:  x86_64
 Type of failure:  Compile-time      |  (amd64)
  crash or panic                     |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by ralf):

 > {-# LANGUAGE NPlusKPatterns #-}

 > module FactorialSequ
 > where
 > import Data.List

 > data Sequ1 a
 >   =  D10 (Sequ2 (a, a))
 >   |  D11 a (Sequ2 (a, a))
 >   |  E1
 >   deriving (Show)

 > data Sequ2 a
 >   =  D20 (Sequ3 (a, a, a))
 >   |  D21 a (Sequ3 (a, a, a))
 >   |  D22 a a (Sequ3 (a, a, a))
 >   |  E2
 >   deriving (Show)

 > data Sequ3 a
 >   =  D30 (Sequ4 (a, a, a, a))
 >   |  D31 a (Sequ4 (a, a, a, a))
 >   |  D32 a a (Sequ4 (a, a, a, a))
 >   |  D33 a a a (Sequ4 (a, a, a, a))
 >   |  E3
 >   deriving (Show)

 > data Sequ4 a
 >   =  D40 (Sequ5 (a, a, a, a, a))
 >   |  D41 a (Sequ5 (a, a, a, a, a))
 >   |  D42 a a (Sequ5 (a, a, a, a, a))
 >   |  D43 a a a (Sequ5 (a, a, a, a, a))
 >   |  D44 a a a a (Sequ5 (a, a, a, a, a))
 >   |  E4
 >   deriving (Show)

 > data Sequ5 a
 >   =  D50 (Sequ6 (a, a, a, a, a, a))
 >   |  D51 a (Sequ6 (a, a, a, a, a, a))
 >   |  D52 a a (Sequ6 (a, a, a, a, a, a))
 >   |  D53 a a a (Sequ6 (a, a, a, a, a, a))
 >   |  D54 a a a a (Sequ6 (a, a, a, a, a, a))
 >   |  D55 a a a a a (Sequ6 (a, a, a, a, a, a))
 >   |  E5
 >   deriving (Show)

 > data Sequ6 a
 >   =  D60 (Sequ7 (a, a, a, a, a, a, a))
 >   |  D61 a (Sequ7 (a, a, a, a, a, a, a))
 >   |  D62 a a (Sequ7 (a, a, a, a, a, a, a))
 >   |  D63 a a a (Sequ7 (a, a, a, a, a, a, a))
 >   |  D64 a a a a (Sequ7 (a, a, a, a, a, a, a))
 >   |  D65 a a a a a (Sequ7 (a, a, a, a, a, a, a))
 >   |  D66 a a a a a a (Sequ7 (a, a, a, a, a, a, a))
 >   |  E6
 >   deriving (Show)

 > data Sequ7 a = E7
 >   deriving (Show)

 > ix2 (a0, a1) 0 = a0
 > ix2 (a0, a1) 1 = a1
 >
 > ix3 (a0, a1, a2) 0 = a0
 > ix3 (a0, a1, a2) 1 = a1
 > ix3 (a0, a1, a2) 2 = a2

 > ix4 (a0, a1, a2, a3) 0 = a0
 > ix4 (a0, a1, a2, a3) 1 = a1
 > ix4 (a0, a1, a2, a3) 2 = a2
 > ix4 (a0, a1, a2, a3) 3 = a3

 > ix5 (a0, a1, a2, a3, a4) 0 = a0
 > ix5 (a0, a1, a2, a3, a4) 1 = a1
 > ix5 (a0, a1, a2, a3, a4) 2 = a2
 > ix5 (a0, a1, a2, a3, a4) 3 = a3
 > ix5 (a0, a1, a2, a3, a4) 4 = a4

 > ix6 (a0, a1, a2, a3, a4, a5) 0 = a0
 > ix6 (a0, a1, a2, a3, a4, a5) 1 = a1
 > ix6 (a0, a1, a2, a3, a4, a5) 2 = a2
 > ix6 (a0, a1, a2, a3, a4, a5) 3 = a3
 > ix6 (a0, a1, a2, a3, a4, a5) 4 = a4
 > ix6 (a0, a1, a2, a3, a4, a5) 5 = a5

 > ix7 (a0, a1, a2, a3, a4, a5, a6) 0 = a0
 > ix7 (a0, a1, a2, a3, a4, a5, a6) 1 = a1
 > ix7 (a0, a1, a2, a3, a4, a5, a6) 2 = a2
 > ix7 (a0, a1, a2, a3, a4, a5, a6) 3 = a3
 > ix7 (a0, a1, a2, a3, a4, a5, a6) 4 = a4
 > ix7 (a0, a1, a2, a3, a4, a5, a6) 5 = a5
 > ix7 (a0, a1, a2, a3, a4, a5, a6) 6 = a6

 > cons1 a0 (D10 s) = D11 a0 s
 > cons1 a0 (D11 a1 s) = D10 (cons2 (a0, a1) s)
 > cons1 a0 (E1) = D11 a0 E2

 > cons2 a0 (D20 s) = D21 a0 s
 > cons2 a0 (D21 a1 s) = D22 a0 a1 s
 > cons2 a0 (D22 a1 a2 s) = D20 (cons3 (a0, a1, a2) s)
 > cons2 a0 (E2) = D21 a0 E3

 > cons3 a0 (D30 s) = D31 a0 s
 > cons3 a0 (D31 a1 s) = D32 a0 a1 s
 > cons3 a0 (D32 a1 a2 s) = D33 a0 a1 a2 s
 > cons3 a0 (D33 a1 a2 a3 s) = D30 (cons4 (a0, a1, a2, a3) s)
 > cons3 a0 (E3) = D31 a0 E4

 > cons4 a0 (D40 s) = D41 a0 s
 > cons4 a0 (D41 a1 s) = D42 a0 a1 s
 > cons4 a0 (D42 a1 a2 s) = D43 a0 a1 a2 s
 > cons4 a0 (D43 a1 a2 a3 s) = D44 a0 a1 a2 a3 s
 > cons4 a0 (D44 a1 a2 a3 a4 s) = D40 (cons5 (a0, a1, a2, a3, a4) s)
 > cons4 a0 (E4) = D41 a0 E5

 > cons5 a0 (D50 s) = D51 a0 s
 > cons5 a0 (D51 a1 s) = D52 a0 a1 s
 > cons5 a0 (D52 a1 a2 s) = D53 a0 a1 a2 s
 > cons5 a0 (D53 a1 a2 a3 s) = D54 a0 a1 a2 a3 s
 > cons5 a0 (D54 a1 a2 a3 a4 s) = D55 a0 a1 a2 a3 a4 s
 > cons5 a0 (D55 a1 a2 a3 a4 a5 s) = D50 (cons6 (a0, a1, a2, a3, a4, a5) s)
 > cons5 a0 (E5) = D51 a0 E6

 > cons6 a0 (D60 s) = D61 a0 s
 > cons6 a0 (D61 a1 s) = D62 a0 a1 s
 > cons6 a0 (D62 a1 a2 s) = D63 a0 a1 a2 s
 > cons6 a0 (D63 a1 a2 a3 s) = D64 a0 a1 a2 a3 s
 > cons6 a0 (D64 a1 a2 a3 a4 s) = D65 a0 a1 a2 a3 a4 s
 > cons6 a0 (D65 a1 a2 a3 a4 a5 s) = D66 a0 a1 a2 a3 a4 a5 s
 > cons6 a0 (D66 a1 a2 a3 a4 a5 a6 s) = D60 (cons7 (a0, a1, a2, a3, a4, a5,
 a6) s)
 > cons6 a0 (E6) = D61 a0 E7

 > cons7 a0 E7 = E7

 > lookup1 n (D10 s) = lookup2 (n `div` 2) s `ix2` (n `mod` 2)
 > lookup1 0 (D11 a0 s) = a0
 > lookup1 (n + 1) (D11 a0 s) = lookup2 (n `div` 2) s `ix2` (n `mod` 2)
 > lookup1 n (E1) = error "out of bounds"

 > lookup2 n (D20 s) = lookup3 (n `div` 3) s `ix3` (n `mod` 3)
 > lookup2 0 (D21 a0 s) = a0
 > lookup2 (n + 1) (D21 a0 s) = lookup3 (n `div` 3) s `ix3` (n `mod` 3)
 > lookup2 0 (D22 a0 a1 s) = a0
 > lookup2 1 (D22 a0 a1 s) = a1
 > lookup2 (n + 2) (D22 a0 a1 s) = lookup3 (n `div` 3) s `ix3` (n `mod` 3)
 > lookup2 n (E2) = error "out of bounds"

 > lookup3 n (D30 s) = lookup4 (n `div` 4) s `ix4` (n `mod` 4)
 > lookup3 0 (D31 a0 s) = a0
 > lookup3 (n + 1) (D31 a0 s) = lookup4 (n `div` 4) s `ix4` (n `mod` 4)
 > lookup3 0 (D32 a0 a1 s) = a0
 > lookup3 1 (D32 a0 a1 s) = a1
 > lookup3 (n + 2) (D32 a0 a1 s) = lookup4 (n `div` 4) s `ix4` (n `mod` 4)
 > lookup3 0 (D33 a0 a1 a2 s) = a0
 > lookup3 1 (D33 a0 a1 a2 s) = a1
 > lookup3 2 (D33 a0 a1 a2 s) = a2
 > lookup3 (n + 3) (D33 a0 a1 a2 s) = lookup4 (n `div` 4) s `ix4` (n `mod`
 4)
 > lookup3 n (E3) = error "out of bounds"

 > lookup4 n (D40 s) = lookup5 (n `div` 5) s `ix5` (n `mod` 5)
 > lookup4 0 (D41 a0 s) = a0
 > lookup4 (n + 1) (D41 a0 s) = lookup5 (n `div` 5) s `ix5` (n `mod` 5)
 > lookup4 0 (D42 a0 a1 s) = a0
 > lookup4 1 (D42 a0 a1 s) = a1
 > lookup4 (n + 2) (D42 a0 a1 s) = lookup5 (n `div` 5) s `ix5` (n `mod` 5)
 > lookup4 0 (D43 a0 a1 a2 s) = a0
 > lookup4 1 (D43 a0 a1 a2 s) = a1
 > lookup4 2 (D43 a0 a1 a2 s) = a2
 > lookup4 (n + 3) (D43 a0 a1 a2 s) = lookup5 (n `div` 5) s `ix5` (n `mod`
 5)
 > lookup4 0 (D44 a0 a1 a2 a3 s) = a0
 > lookup4 1 (D44 a0 a1 a2 a3 s) = a1
 > lookup4 2 (D44 a0 a1 a2 a3 s) = a2
 > lookup4 3 (D44 a0 a1 a2 a3 s) = a3
 > lookup4 (n + 4) (D44 a0 a1 a2 a3 s) = lookup5 (n `div` 5) s `ix5` (n
 `mod` 5)

 > lookup5 n (D50 s) = lookup6 (n `div` 6) s `ix6` (n `mod` 6)
 > lookup5 0 (D51 a0 s) = a0
 > lookup5 (n + 1) (D51 a0 s) = lookup6 (n `div` 6) s `ix6` (n `mod` 6)
 > lookup5 0 (D52 a0 a1 s) = a0
 > lookup5 1 (D52 a0 a1 s) = a1
 > lookup5 (n + 2) (D52 a0 a1 s) = lookup6 (n `div` 6) s `ix6` (n `mod` 6)
 > lookup5 0 (D53 a0 a1 a2 s) = a0
 > lookup5 1 (D53 a0 a1 a2 s) = a1
 > lookup5 2 (D53 a0 a1 a2 s) = a2
 > lookup5 (n + 3) (D53 a0 a1 a2 s) = lookup6 (n `div` 6) s `ix6` (n `mod`
 6)
 > lookup5 0 (D54 a0 a1 a2 a3 s) = a0
 > lookup5 1 (D54 a0 a1 a2 a3 s) = a1
 > lookup5 2 (D54 a0 a1 a2 a3 s) = a2
 > lookup5 3 (D54 a0 a1 a2 a3 s) = a3
 > lookup5 (n + 4) (D54 a0 a1 a2 a3 s) = lookup6 (n `div` 6) s `ix6` (n
 `mod` 6)
 > lookup5 0 (D55 a0 a1 a2 a3 a4 s) = a0
 > lookup5 1 (D55 a0 a1 a2 a3 a4 s) = a1
 > lookup5 2 (D55 a0 a1 a2 a3 a4 s) = a2
 > lookup5 3 (D55 a0 a1 a2 a3 a4 s) = a3
 > lookup5 4 (D55 a0 a1 a2 a3 a4 s) = a4
 > lookup5 (n + 5) (D55 a0 a1 a2 a3 a4 s) = lookup6 (n `div` 6) s `ix6` (n
 `mod` 6)

 > lookup6 n (D60 s) = lookup7 (n `div` 7) s `ix7` (n `mod` 7)
 > lookup6 0 (D61 a0 s) = a0
 > lookup6 (n + 1) (D61 a0 s) = lookup7 (n `div` 7) s `ix7` (n `mod` 7)
 > lookup6 0 (D62 a0 a1 s) = a0
 > lookup6 1 (D62 a0 a1 s) = a1
 > lookup6 (n + 2) (D62 a0 a1 s) = lookup7 (n `div` 7) s `ix7` (n `mod` 7)
 > lookup6 0 (D63 a0 a1 a2 s) = a0
 > lookup6 1 (D63 a0 a1 a2 s) = a1
 > lookup6 2 (D63 a0 a1 a2 s) = a2
 > lookup6 (n + 3) (D63 a0 a1 a2 s) = lookup7 (n `div` 7) s `ix7` (n `mod`
 7)
 > lookup6 0 (D64 a0 a1 a2 a3 s) = a0
 > lookup6 1 (D64 a0 a1 a2 a3 s) = a1
 > lookup6 2 (D64 a0 a1 a2 a3 s) = a2
 > lookup6 3 (D64 a0 a1 a2 a3 s) = a3
 > lookup6 (n + 4) (D64 a0 a1 a2 a3 s) = lookup7 (n `div` 7) s `ix7` (n
 `mod` 7)
 > lookup6 0 (D65 a0 a1 a2 a3 a4 s) = a0
 > lookup6 1 (D65 a0 a1 a2 a3 a4 s) = a1
 > lookup6 2 (D65 a0 a1 a2 a3 a4 s) = a2
 > lookup6 3 (D65 a0 a1 a2 a3 a4 s) = a3
 > lookup6 4 (D65 a0 a1 a2 a3 a4 s) = a4
 > lookup6 (n + 5) (D65 a0 a1 a2 a3 a4 s) = lookup7 (n `div` 7) s `ix7` (n
 `mod` 7)
 > lookup6 0 (D66 a0 a1 a2 a3 a4 a5 s) = a0
 > lookup6 1 (D66 a0 a1 a2 a3 a4 a5 s) = a1
 > lookup6 2 (D66 a0 a1 a2 a3 a4 a5 s) = a2
 > lookup6 3 (D66 a0 a1 a2 a3 a4 a5 s) = a3
 > lookup6 4 (D66 a0 a1 a2 a3 a4 a5 s) = a4
 > lookup6 5 (D66 a0 a1 a2 a3 a4 a5 s) = a5
 > lookup6 (n + 6) (D66 a0 a1 a2 a3 a4 a5 s) = lookup7 (n `div` 7) s `ix7`
 (n `mod` 7)

 > lookup7 n s = error "out of bounds"

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


More information about the ghc-tickets mailing list