[GHC] #13549: GHC 8.2.1's typechecker rejects code generated by singletons that 8.0 accepts

GHC ghc-devs at haskell.org
Sat Apr 8 21:45:17 UTC 2017


#13549: GHC 8.2.1's typechecker rejects code generated by singletons that 8.0
accepts
-------------------------------------+-------------------------------------
        Reporter:  RyanGlScott       |                Owner:  (none)
            Type:  bug               |               Status:  new
        Priority:  high              |            Milestone:  8.2.1
       Component:  Compiler (Type    |              Version:  8.0.1
  checker)                           |
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
 Type of failure:  GHC rejects       |  Unknown/Multiple
  valid program                      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------
Description changed by RyanGlScott:

Old description:

> I recently attempted to upgrade `singletons` to use GHC 8.2.1, but was
> thwarted when GHC's typechecker rejected code that was generated by
> Template Haskell. I was able to put all of this code in a single module
> (which I've attached), but sadly, it's 1367 lines long. What's important
> is that GHC 8.0.1 and 8.0.2 accept this code, but neither 8.2.1-rc1 nor
> HEAD do. Here is the error message you get, in its full glory:
>
> {{{
> $ /opt/ghc/8.2.1/bin/ghci Bug.hs
> GHCi, version 8.2.0.20170403: http://www.haskell.org/ghc/  :? for help
> Loaded GHCi configuration from /home/rgscott/.ghci
> [1 of 1] Compiling Bug              ( Bug.hs, interpreted )
>
> Bug.hs:1328:59: error:
>     • Couldn't match type ‘c69895866216793215480’ with ‘[a_a337f]’
>         ‘c69895866216793215480’ is untouchable
>           inside the constraints: (arg_a33hh ~ xs_a33fp, arg_a33hi ~
> r_a33fq)
>           bound by the type signature for:
>                      lambda_a33iH :: forall (xs_a33fp :: [a_a337f])
> (r_a33fq :: [[a_a337f]]).
>                                      (arg_a33hh ~ xs_a33fp, arg_a33hi ~
> r_a33fq) =>
>                                      Sing xs_a33fp
>                                      -> Sing r_a33fq
>                                      -> Sing
>                                           (Apply
>                                              (Apply
> (Let6989586621679736980InterleaveSym4
>                                                    xs0_a33a0 t_a33aL
> ts_a33aM is_a33aO)
>                                                 arg_a33hh)
>                                              arg_a33hi)
>           at Bug.hs:(1289,35)-(1294,157)
>       Expected type: Sing t
>                      -> Sing t1
>                      -> Sing t2
>                      -> Sing
>                           (((Let6989586621679736980Interleave'Sym4
>                                xs0_a33a0 t_a33aL ts_a33aM is_a33aO
>                              @@ t)
>                             @@ t1)
>                            @@ t2)
>         Actual type: Sing t
>                      -> Sing t1
>                      -> Sing t2
>                      -> Sing
>                           (Apply
>                              (Apply
>                                 (Apply
>                                    (Let6989586621679736980Interleave'Sym4
>                                       xs0_a33a0 t_a33aL ts_a33aM
> is_a33aO)
>                                    t)
>                                 t1)
>                              t2)
>     • In the second argument of ‘singFun3’, namely ‘sInterleave'’
>       In the first argument of ‘applySing’, namely
>         ‘((singFun3
>              (Proxy ::
>                 Proxy (Let6989586621679736980Interleave'Sym4 xs0_a33a0
> t_a33aL ts_a33aM is_a33aO)))
>             sInterleave')’
>       In the first argument of ‘applySing’, namely
>         ‘((applySing
>              ((singFun3
>                  (Proxy ::
>                     Proxy (Let6989586621679736980Interleave'Sym4
> xs0_a33a0 t_a33aL ts_a33aM is_a33aO)))
>                 sInterleave'))
>             ((singFun1 (Proxy :: Proxy IdSym0)) sId))’
>     • Relevant bindings include
>         sX_6989586621679737266 :: Sing
> (Let6989586621679737265X_6989586621679737266Sym6
>                                        xs0_a33a0 t_a33aL ts_a33aM
> is_a33aO xs_a33fp r_a33fq)
>           (bound at Bug.hs:1321:41)
>         r_a33iK :: Sing r_a33fq (bound at Bug.hs:1295:57)
>         xs_a33iJ :: Sing xs_a33fp (bound at Bug.hs:1295:48)
>         lambda_a33iH :: Sing xs_a33fp
>                         -> Sing r_a33fq
>                         -> Sing
>                              (Apply
>                                 (Apply
>                                    (Let6989586621679736980InterleaveSym4
>                                       xs0_a33a0 t_a33aL ts_a33aM
> is_a33aO)
>                                    arg_a33hh)
>                                 arg_a33hi)
>           (bound at Bug.hs:1295:35)
>         sR :: Sing arg_a33hi (bound at Bug.hs:1287:45)
>         sXs :: Sing arg_a33hh (bound at Bug.hs:1287:41)
>         sInterleave' :: forall (arg_a33he :: TyFun
>                                                [a_a337f]
> c69895866216793215480
>                                              -> *) (arg_a33hf ::
> [a_a337f]) (arg_a33hg :: [c69895866216793215480]).
>                         Sing arg_a33he
>                         -> Sing arg_a33hf
>                         -> Sing arg_a33hg
>                         -> Sing
>                              (Apply
>                                 (Apply
>                                    (Apply
> (Let6989586621679736980Interleave'Sym4
>                                          xs0_a33a0 t_a33aL ts_a33aM
> is_a33aO)
>                                       arg_a33he)
>                                    arg_a33hf)
>                                 arg_a33hg)
>           (bound at Bug.hs:1166:29)
>         lambda_a33ha :: Sing t_a33aL
>                         -> Sing ts_a33aM
>                         -> Sing is_a33aO
>                         -> Sing
>                              (Apply
>                                 (Apply (Let6989586621679736931PermsSym1
> xs0_a33a0) arg_a33h0)
>                                 arg_a33h1)
>           (bound at Bug.hs:1153:23)
>         sTs :: Sing n_a1kQd (bound at Bug.hs:1143:34)
>         sT :: Sing n_a1kQc (bound at Bug.hs:1143:31)
>         lambda_a33gY :: Sing xs0_a33a0
>                         -> Sing (Apply PermutationsSym0 t_a33gX)
>           (bound at Bug.hs:1127:11)
>         (Some bindings suppressed; use -fmax-relevant-binds=N or -fno-
> max-relevant-binds)
>      |
> 1328 |
> sInterleave'))
>      |
> ^^^^^^^^^^^^
>
> Bug.hs:1328:59: error:
>     • Could not deduce: Let6989586621679736980Interleave'
>                           xs0_a33a0 t_a33aL ts_a33aM is_a33aO t t1 t2
>                         ~
>                         Let6989586621679736980Interleave'
>                           xs0_a33a0 t_a33aL ts_a33aM is_a33aO t t1 t2
>       from the context: t_a33gX ~ xs0_a33a0
>         bound by the type signature for:
>                    lambda_a33gY :: forall (xs0_a33a0 :: [a_a337f]).
>                                    t_a33gX ~ xs0_a33a0 =>
>                                    Sing xs0_a33a0 -> Sing (Apply
> PermutationsSym0 t_a33gX)
>         at Bug.hs:(1122,11)-(1126,67)
>       or from: arg_a33h0 ~ (n_a1kQc : n_a1kQd)
>         bound by a pattern with constructor:
>                    SCons :: forall a_11 (z_a1kQb :: [a_11]) (n_a1kQc ::
> a_11) (n_a1kQd :: [a_11]).
>                             z_a1kQb ~ (n_a1kQc : n_a1kQd) =>
>                             Sing n_a1kQc -> Sing n_a1kQd -> Sing z_a1kQb,
>                  in an equation for ‘sPerms’
>         at Bug.hs:1143:25-36
>       or from: (arg_a33h0 ~ Apply (Apply (:$) t_a33aL) ts_a33aM,
>                 arg_a33h1 ~ is_a33aO)
>         bound by the type signature for:
>                    lambda_a33ha :: forall (t_a33aL :: a_a337f) (ts_a33aM
> :: [a_a337f]) (is_a33aO :: [a_a337f]).
>                                    (arg_a33h0 ~ Apply (Apply (:$)
> t_a33aL) ts_a33aM,
>                                     arg_a33h1 ~ is_a33aO) =>
>                                    Sing t_a33aL
>                                    -> Sing ts_a33aM
>                                    -> Sing is_a33aO
>                                    -> Sing
>                                         (Apply
>                                            (Apply
> (Let6989586621679736931PermsSym1 xs0_a33a0) arg_a33h0)
>                                            arg_a33h1)
>         at Bug.hs:(1145,23)-(1152,117)
>       or from: (arg_a33hh ~ xs_a33fp, arg_a33hi ~ r_a33fq)
>         bound by the type signature for:
>                    lambda_a33iH :: forall (xs_a33fp :: [a_a337f])
> (r_a33fq :: [[a_a337f]]).
>                                    (arg_a33hh ~ xs_a33fp, arg_a33hi ~
> r_a33fq) =>
>                                    Sing xs_a33fp
>                                    -> Sing r_a33fq
>                                    -> Sing
>                                         (Apply
>                                            (Apply
> (Let6989586621679736980InterleaveSym4
>                                                  xs0_a33a0 t_a33aL
> ts_a33aM is_a33aO)
>                                               arg_a33hh)
>                                            arg_a33hi)
>         at Bug.hs:(1289,35)-(1294,157)
>       Expected type: Sing t
>                      -> Sing t1
>                      -> Sing t2
>                      -> Sing
>                           (((Let6989586621679736980Interleave'Sym4
>                                xs0_a33a0 t_a33aL ts_a33aM is_a33aO
>                              @@ t)
>                             @@ t1)
>                            @@ t2)
>         Actual type: Sing t
>                      -> Sing t1
>                      -> Sing t2
>                      -> Sing
>                           (Apply
>                              (Apply
>                                 (Apply
>                                    (Let6989586621679736980Interleave'Sym4
>                                       xs0_a33a0 t_a33aL ts_a33aM
> is_a33aO)
>                                    t)
>                                 t1)
>                              t2)
>       The type variable ‘c69895866216793215480’ is ambiguous
>       Use -fprint-explicit-kinds to see the kind arguments
>     • In the second argument of ‘singFun3’, namely ‘sInterleave'’
>       In the first argument of ‘applySing’, namely
>         ‘((singFun3
>              (Proxy ::
>                 Proxy (Let6989586621679736980Interleave'Sym4 xs0_a33a0
> t_a33aL ts_a33aM is_a33aO)))
>             sInterleave')’
>       In the first argument of ‘applySing’, namely
>         ‘((applySing
>              ((singFun3
>                  (Proxy ::
>                     Proxy (Let6989586621679736980Interleave'Sym4
> xs0_a33a0 t_a33aL ts_a33aM is_a33aO)))
>                 sInterleave'))
>             ((singFun1 (Proxy :: Proxy IdSym0)) sId))’
>     • Relevant bindings include
>         sX_6989586621679737266 :: Sing
> (Let6989586621679737265X_6989586621679737266Sym6
>                                        xs0_a33a0 t_a33aL ts_a33aM
> is_a33aO xs_a33fp r_a33fq)
>           (bound at Bug.hs:1321:41)
>         r_a33iK :: Sing r_a33fq (bound at Bug.hs:1295:57)
>         xs_a33iJ :: Sing xs_a33fp (bound at Bug.hs:1295:48)
>         lambda_a33iH :: Sing xs_a33fp
>                         -> Sing r_a33fq
>                         -> Sing
>                              (Apply
>                                 (Apply
>                                    (Let6989586621679736980InterleaveSym4
>                                       xs0_a33a0 t_a33aL ts_a33aM
> is_a33aO)
>                                    arg_a33hh)
>                                 arg_a33hi)
>           (bound at Bug.hs:1295:35)
>         sR :: Sing arg_a33hi (bound at Bug.hs:1287:45)
>         sXs :: Sing arg_a33hh (bound at Bug.hs:1287:41)
>         sInterleave' :: forall (arg_a33he :: TyFun
>                                                [a_a337f]
> c69895866216793215480
>                                              -> *) (arg_a33hf ::
> [a_a337f]) (arg_a33hg :: [c69895866216793215480]).
>                         Sing arg_a33he
>                         -> Sing arg_a33hf
>                         -> Sing arg_a33hg
>                         -> Sing
>                              (Apply
>                                 (Apply
>                                    (Apply
> (Let6989586621679736980Interleave'Sym4
>                                          xs0_a33a0 t_a33aL ts_a33aM
> is_a33aO)
>                                       arg_a33he)
>                                    arg_a33hf)
>                                 arg_a33hg)
>           (bound at Bug.hs:1166:29)
>         lambda_a33ha :: Sing t_a33aL
>                         -> Sing ts_a33aM
>                         -> Sing is_a33aO
>                         -> Sing
>                              (Apply
>                                 (Apply (Let6989586621679736931PermsSym1
> xs0_a33a0) arg_a33h0)
>                                 arg_a33h1)
>           (bound at Bug.hs:1153:23)
>         sTs :: Sing n_a1kQd (bound at Bug.hs:1143:34)
>         sT :: Sing n_a1kQc (bound at Bug.hs:1143:31)
>         lambda_a33gY :: Sing xs0_a33a0
>                         -> Sing (Apply PermutationsSym0 t_a33gX)
>           (bound at Bug.hs:1127:11)
>         (Some bindings suppressed; use -fmax-relevant-binds=N or -fno-
> max-relevant-binds)
>      |
> 1328 |
> sInterleave'))
>      |
> ^^^^^^^^^^^^
> }}}

New description:

 I recently attempted to upgrade `singletons` to use GHC 8.2.1, but was
 thwarted when GHC's typechecker rejected code that was generated by
 Template Haskell. I was able to put all of this code in a single module
 (which I've attached), but sadly, it's 1367 lines long. What's important
 is that GHC 8.0.1 and 8.0.2 accept this code, but neither 8.2.1-rc1 nor
 HEAD do. Here is the error message you get, in its full glory:

 {{{
 $ /opt/ghc/8.2.1/bin/ghci Bug.hs -fprint-explicit-kinds
 GHCi, version 8.2.0.20170403: http://www.haskell.org/ghc/  :? for help
 Loaded GHCi configuration from /home/rgscott/.ghci
 [1 of 1] Compiling Bug              ( Bug.hs, interpreted )

 Bug.hs:1328:59: error:
     • Couldn't match type ‘c69895866216793215480’ with ‘[a_a337f]’
         ‘c69895866216793215480’ is untouchable
           inside the constraints: (arg_a33hh ~ xs_a33fp, arg_a33hi ~
 r_a33fq)
           bound by the type signature for:
                      lambda_a33iH :: forall (xs_a33fp :: [a_a337f])
 (r_a33fq :: [[a_a337f]]).
                                      (arg_a33hh ~ xs_a33fp, arg_a33hi ~
 r_a33fq) =>
                                      Sing [a_a337f] xs_a33fp
                                      -> Sing [[a_a337f]] r_a33fq
                                      -> Sing
                                           [[a_a337f]]
                                           (Apply
                                              [[a_a337f]]
                                              [[a_a337f]]
                                              (Apply
                                                 [a_a337f]
                                                 (TyFun [[a_a337f]]
 [[a_a337f]] -> *)
 (Let6989586621679736980InterleaveSym4
                                                    [a_a337f]
                                                    [a_a337f]
                                                    a_a337f
                                                    xs0_a33a0
                                                    t_a33aL
                                                    ts_a33aM
                                                    is_a33aO)
                                                 arg_a33hh)
                                              arg_a33hi)
           at Bug.hs:(1289,35)-(1294,157)
       Expected type: Sing (TyFun [a_a337f] [a_a337f] -> *) t
                      -> Sing [a_a337f] t1
                      -> Sing [[a_a337f]] t2
                      -> Sing
                           ([a_a337f], [[a_a337f]])
                           ((@@)
                              [[a_a337f]]
                              ([a_a337f], [[a_a337f]])
                              ((@@)
                                 [a_a337f]
                                 ([[a_a337f]] ~> ([a_a337f], [[a_a337f]]))
                                 ((@@)
                                    (TyFun [a_a337f] [a_a337f] -> *)
                                    ([a_a337f] ~> ([[a_a337f]] ~>
 ([a_a337f], [[a_a337f]])))
                                    (Let6989586621679736980Interleave'Sym4
                                       [a_a337f]
                                       [a_a337f]
                                       a_a337f
                                       [a_a337f]
                                       xs0_a33a0
                                       t_a33aL
                                       ts_a33aM
                                       is_a33aO)
                                    t)
                                 t1)
                              t2)
         Actual type: Sing (TyFun [a_a337f] c69895866216793215480 -> *) t
                      -> Sing [a_a337f] t1
                      -> Sing [c69895866216793215480] t2
                      -> Sing
                           ([a_a337f], [c69895866216793215480])
                           (Apply
                              [c69895866216793215480]
                              ([a_a337f], [c69895866216793215480])
                              (Apply
                                 [a_a337f]
                                 ([c69895866216793215480] ~> ([a_a337f],
 [c69895866216793215480]))
                                 (Apply
                                    (TyFun [a_a337f] c69895866216793215480
 -> *)
                                    ([a_a337f]
                                     ~> ([c69895866216793215480]
                                         ~> ([a_a337f],
 [c69895866216793215480])))
                                    (Let6989586621679736980Interleave'Sym4
                                       [a_a337f]
                                       [a_a337f]
                                       a_a337f
                                       c69895866216793215480
                                       xs0_a33a0
                                       t_a33aL
                                       ts_a33aM
                                       is_a33aO)
                                    t)
                                 t1)
                              t2)
     • In the second argument of ‘singFun3’, namely ‘sInterleave'’
       In the first argument of ‘applySing’, namely
         ‘((singFun3
              (Proxy ::
                 Proxy (Let6989586621679736980Interleave'Sym4 xs0_a33a0
 t_a33aL ts_a33aM is_a33aO)))
             sInterleave')’
       In the first argument of ‘applySing’, namely
         ‘((applySing
              ((singFun3
                  (Proxy ::
                     Proxy (Let6989586621679736980Interleave'Sym4 xs0_a33a0
 t_a33aL ts_a33aM is_a33aO)))
                 sInterleave'))
             ((singFun1 (Proxy :: Proxy IdSym0)) sId))’
     • Relevant bindings include
         sX_6989586621679737266 :: Sing
                                     ([a_a337f], [[a_a337f]])
 (Let6989586621679737265X_6989586621679737266Sym6
                                        [a_a337f]
                                        [a_a337f]
                                        a_a337f
                                        xs0_a33a0
                                        t_a33aL
                                        ts_a33aM
                                        is_a33aO
                                        xs_a33fp
                                        r_a33fq)
           (bound at Bug.hs:1321:41)
         r_a33iK :: Sing [[a_a337f]] r_a33fq (bound at Bug.hs:1295:57)
         xs_a33iJ :: Sing [a_a337f] xs_a33fp (bound at Bug.hs:1295:48)
         lambda_a33iH :: Sing [a_a337f] xs_a33fp
                         -> Sing [[a_a337f]] r_a33fq
                         -> Sing
                              [[a_a337f]]
                              (Apply
                                 [[a_a337f]]
                                 [[a_a337f]]
                                 (Apply
                                    [a_a337f]
                                    (TyFun [[a_a337f]] [[a_a337f]] -> *)
                                    (Let6989586621679736980InterleaveSym4
                                       [a_a337f]
                                       [a_a337f]
                                       a_a337f
                                       xs0_a33a0
                                       t_a33aL
                                       ts_a33aM
                                       is_a33aO)
                                    arg_a33hh)
                                 arg_a33hi)
           (bound at Bug.hs:1295:35)
         sR :: Sing [[a_a337f]] arg_a33hi (bound at Bug.hs:1287:45)
         sXs :: Sing [a_a337f] arg_a33hh (bound at Bug.hs:1287:41)
         sInterleave' :: forall (arg_a33he :: TyFun
                                                [a_a337f]
 c69895866216793215480
                                              -> *) (arg_a33hf ::
 [a_a337f]) (arg_a33hg :: [c69895866216793215480]).
                         Sing (TyFun [a_a337f] c69895866216793215480 -> *)
 arg_a33he
                         -> Sing [a_a337f] arg_a33hf
                         -> Sing [c69895866216793215480] arg_a33hg
                         -> Sing
                              ([a_a337f], [c69895866216793215480])
                              (Apply
                                 [c69895866216793215480]
                                 ([a_a337f], [c69895866216793215480])
                                 (Apply
                                    [a_a337f]
                                    ([c69895866216793215480] ~> ([a_a337f],
 [c69895866216793215480]))
                                    (Apply
                                       (TyFun [a_a337f]
 c69895866216793215480 -> *)
                                       ([a_a337f]
                                        ~> ([c69895866216793215480]
                                            ~> ([a_a337f],
 [c69895866216793215480])))
 (Let6989586621679736980Interleave'Sym4
                                          [a_a337f]
                                          [a_a337f]
                                          a_a337f
                                          c69895866216793215480
                                          xs0_a33a0
                                          t_a33aL
                                          ts_a33aM
                                          is_a33aO)
                                       arg_a33he)
                                    arg_a33hf)
                                 arg_a33hg)
           (bound at Bug.hs:1166:29)
         lambda_a33ha :: Sing a_a337f t_a33aL
                         -> Sing [a_a337f] ts_a33aM
                         -> Sing [a_a337f] is_a33aO
                         -> Sing
                              [[a_a337f]]
                              (Apply
                                 [a_a337f]
                                 [[a_a337f]]
                                 (Apply
                                    [a_a337f]
                                    ([a_a337f] ~> [[a_a337f]])
                                    (Let6989586621679736931PermsSym1
 a_a337f xs0_a33a0)
                                    arg_a33h0)
                                 arg_a33h1)
           (bound at Bug.hs:1153:23)
         sTs :: Sing [a_a337f] n_a1kQd (bound at Bug.hs:1143:34)
         sT :: Sing a_a337f n_a1kQc (bound at Bug.hs:1143:31)
         lambda_a33gY :: Sing [a_a337f] xs0_a33a0
                         -> Sing
                              [[a_a337f]]
                              (Apply [a_a337f] [[a_a337f]]
 (PermutationsSym0 a_a337f) t_a33gX)
           (bound at Bug.hs:1127:11)
         (Some bindings suppressed; use -fmax-relevant-binds=N or -fno-max-
 relevant-binds)
      |
 1328 |
 sInterleave'))
      |
 ^^^^^^^^^^^^

 Bug.hs:1328:59: error:
     • Could not deduce: (Let6989586621679736980Interleave'
                            [a_a337f]
                            [a_a337f]
                            a_a337f
                            c69895866216793215480
                            xs0_a33a0
                            t_a33aL
                            ts_a33aM
                            is_a33aO
                            t
                            t1
                            t2 :: ([a_a337f], [c69895866216793215480]))
                         ~~
                         (Let6989586621679736980Interleave'
                            [a_a337f]
                            [a_a337f]
                            a_a337f
                            [a_a337f]
                            xs0_a33a0
                            t_a33aL
                            ts_a33aM
                            is_a33aO
                            t
                            t1
                            t2 :: ([a_a337f], [c69895866216793215480]))
       from the context: t_a33gX ~ xs0_a33a0
         bound by the type signature for:
                    lambda_a33gY :: forall (xs0_a33a0 :: [a_a337f]).
                                    t_a33gX ~ xs0_a33a0 =>
                                    Sing [a_a337f] xs0_a33a0
                                    -> Sing
                                         [[a_a337f]]
                                         (Apply
                                            [a_a337f] [[a_a337f]]
 (PermutationsSym0 a_a337f) t_a33gX)
         at Bug.hs:(1122,11)-(1126,67)
       or from: arg_a33h0 ~ (':) a_a337f n_a1kQc n_a1kQd
         bound by a pattern with constructor:
                    SCons :: forall a_11 (z_a1kQb :: [a_11]) (n_a1kQc ::
 a_11) (n_a1kQd :: [a_11]).
                             z_a1kQb ~ (':) a_11 n_a1kQc n_a1kQd =>
                             Sing a_11 n_a1kQc -> Sing [a_11] n_a1kQd ->
 Sing [a_11] z_a1kQb,
                  in an equation for ‘sPerms’
         at Bug.hs:1143:25-36
       or from: (arg_a33h0
                 ~
                 Apply
                   [a_a337f]
                   [a_a337f]
                   (Apply
                      a_a337f (TyFun [a_a337f] [a_a337f] -> *) ((:$)
 a_a337f) t_a33aL)
                   ts_a33aM,
                 arg_a33h1 ~ is_a33aO)
         bound by the type signature for:
                    lambda_a33ha :: forall (t_a33aL :: a_a337f) (ts_a33aM
 :: [a_a337f]) (is_a33aO :: [a_a337f]).
                                    (arg_a33h0
                                     ~
                                     Apply
                                       [a_a337f]
                                       [a_a337f]
                                       (Apply
                                          a_a337f
                                          (TyFun [a_a337f] [a_a337f] -> *)
                                          ((:$) a_a337f)
                                          t_a33aL)
                                       ts_a33aM,
                                     arg_a33h1 ~ is_a33aO) =>
                                    Sing a_a337f t_a33aL
                                    -> Sing [a_a337f] ts_a33aM
                                    -> Sing [a_a337f] is_a33aO
                                    -> Sing
                                         [[a_a337f]]
                                         (Apply
                                            [a_a337f]
                                            [[a_a337f]]
                                            (Apply
                                               [a_a337f]
                                               ([a_a337f] ~> [[a_a337f]])
 (Let6989586621679736931PermsSym1 a_a337f xs0_a33a0)
                                               arg_a33h0)
                                            arg_a33h1)
         at Bug.hs:(1145,23)-(1152,117)
       or from: (arg_a33hh ~ xs_a33fp, arg_a33hi ~ r_a33fq)
         bound by the type signature for:
                    lambda_a33iH :: forall (xs_a33fp :: [a_a337f]) (r_a33fq
 :: [[a_a337f]]).
                                    (arg_a33hh ~ xs_a33fp, arg_a33hi ~
 r_a33fq) =>
                                    Sing [a_a337f] xs_a33fp
                                    -> Sing [[a_a337f]] r_a33fq
                                    -> Sing
                                         [[a_a337f]]
                                         (Apply
                                            [[a_a337f]]
                                            [[a_a337f]]
                                            (Apply
                                               [a_a337f]
                                               (TyFun [[a_a337f]]
 [[a_a337f]] -> *)
 (Let6989586621679736980InterleaveSym4
                                                  [a_a337f]
                                                  [a_a337f]
                                                  a_a337f
                                                  xs0_a33a0
                                                  t_a33aL
                                                  ts_a33aM
                                                  is_a33aO)
                                               arg_a33hh)
                                            arg_a33hi)
         at Bug.hs:(1289,35)-(1294,157)
       Expected type: Sing (TyFun [a_a337f] [a_a337f] -> *) t
                      -> Sing [a_a337f] t1
                      -> Sing [[a_a337f]] t2
                      -> Sing
                           ([a_a337f], [[a_a337f]])
                           ((@@)
                              [[a_a337f]]
                              ([a_a337f], [[a_a337f]])
                              ((@@)
                                 [a_a337f]
                                 ([[a_a337f]] ~> ([a_a337f], [[a_a337f]]))
                                 ((@@)
                                    (TyFun [a_a337f] [a_a337f] -> *)
                                    ([a_a337f] ~> ([[a_a337f]] ~>
 ([a_a337f], [[a_a337f]])))
                                    (Let6989586621679736980Interleave'Sym4
                                       [a_a337f]
                                       [a_a337f]
                                       a_a337f
                                       [a_a337f]
                                       xs0_a33a0
                                       t_a33aL
                                       ts_a33aM
                                       is_a33aO)
                                    t)
                                 t1)
                              t2)
         Actual type: Sing (TyFun [a_a337f] c69895866216793215480 -> *) t
                      -> Sing [a_a337f] t1
                      -> Sing [c69895866216793215480] t2
                      -> Sing
                           ([a_a337f], [c69895866216793215480])
                           (Apply
                              [c69895866216793215480]
                              ([a_a337f], [c69895866216793215480])
                              (Apply
                                 [a_a337f]
                                 ([c69895866216793215480] ~> ([a_a337f],
 [c69895866216793215480]))
                                 (Apply
                                    (TyFun [a_a337f] c69895866216793215480
 -> *)
                                    ([a_a337f]
                                     ~> ([c69895866216793215480]
                                         ~> ([a_a337f],
 [c69895866216793215480])))
                                    (Let6989586621679736980Interleave'Sym4
                                       [a_a337f]
                                       [a_a337f]
                                       a_a337f
                                       c69895866216793215480
                                       xs0_a33a0
                                       t_a33aL
                                       ts_a33aM
                                       is_a33aO)
                                    t)
                                 t1)
                              t2)
       The type variable ‘c69895866216793215480’ is ambiguous
     • In the second argument of ‘singFun3’, namely ‘sInterleave'’
       In the first argument of ‘applySing’, namely
         ‘((singFun3
              (Proxy ::
                 Proxy (Let6989586621679736980Interleave'Sym4 xs0_a33a0
 t_a33aL ts_a33aM is_a33aO)))
             sInterleave')’
       In the first argument of ‘applySing’, namely
         ‘((applySing
              ((singFun3
                  (Proxy ::
                     Proxy (Let6989586621679736980Interleave'Sym4 xs0_a33a0
 t_a33aL ts_a33aM is_a33aO)))
                 sInterleave'))
             ((singFun1 (Proxy :: Proxy IdSym0)) sId))’
     • Relevant bindings include
         sX_6989586621679737266 :: Sing
                                     ([a_a337f], [[a_a337f]])
 (Let6989586621679737265X_6989586621679737266Sym6
                                        [a_a337f]
                                        [a_a337f]
                                        a_a337f
                                        xs0_a33a0
                                        t_a33aL
                                        ts_a33aM
                                        is_a33aO
                                        xs_a33fp
                                        r_a33fq)
           (bound at Bug.hs:1321:41)
         r_a33iK :: Sing [[a_a337f]] r_a33fq (bound at Bug.hs:1295:57)
         xs_a33iJ :: Sing [a_a337f] xs_a33fp (bound at Bug.hs:1295:48)
         lambda_a33iH :: Sing [a_a337f] xs_a33fp
                         -> Sing [[a_a337f]] r_a33fq
                         -> Sing
                              [[a_a337f]]
                              (Apply
                                 [[a_a337f]]
                                 [[a_a337f]]
                                 (Apply
                                    [a_a337f]
                                    (TyFun [[a_a337f]] [[a_a337f]] -> *)
                                    (Let6989586621679736980InterleaveSym4
                                       [a_a337f]
                                       [a_a337f]
                                       a_a337f
                                       xs0_a33a0
                                       t_a33aL
                                       ts_a33aM
                                       is_a33aO)
                                    arg_a33hh)
                                 arg_a33hi)
           (bound at Bug.hs:1295:35)
         sR :: Sing [[a_a337f]] arg_a33hi (bound at Bug.hs:1287:45)
         sXs :: Sing [a_a337f] arg_a33hh (bound at Bug.hs:1287:41)
         sInterleave' :: forall (arg_a33he :: TyFun
                                                [a_a337f]
 c69895866216793215480
                                              -> *) (arg_a33hf ::
 [a_a337f]) (arg_a33hg :: [c69895866216793215480]).
                         Sing (TyFun [a_a337f] c69895866216793215480 -> *)
 arg_a33he
                         -> Sing [a_a337f] arg_a33hf
                         -> Sing [c69895866216793215480] arg_a33hg
                         -> Sing
                              ([a_a337f], [c69895866216793215480])
                              (Apply
                                 [c69895866216793215480]
                                 ([a_a337f], [c69895866216793215480])
                                 (Apply
                                    [a_a337f]
                                    ([c69895866216793215480] ~> ([a_a337f],
 [c69895866216793215480]))
                                    (Apply
                                       (TyFun [a_a337f]
 c69895866216793215480 -> *)
                                       ([a_a337f]
                                        ~> ([c69895866216793215480]
                                            ~> ([a_a337f],
 [c69895866216793215480])))
 (Let6989586621679736980Interleave'Sym4
                                          [a_a337f]
                                          [a_a337f]
                                          a_a337f
                                          c69895866216793215480
                                          xs0_a33a0
                                          t_a33aL
                                          ts_a33aM
                                          is_a33aO)
                                       arg_a33he)
                                    arg_a33hf)
                                 arg_a33hg)
           (bound at Bug.hs:1166:29)
         lambda_a33ha :: Sing a_a337f t_a33aL
                         -> Sing [a_a337f] ts_a33aM
                         -> Sing [a_a337f] is_a33aO
                         -> Sing
                              [[a_a337f]]
                              (Apply
                                 [a_a337f]
                                 [[a_a337f]]
                                 (Apply
                                    [a_a337f]
                                    ([a_a337f] ~> [[a_a337f]])
                                    (Let6989586621679736931PermsSym1
 a_a337f xs0_a33a0)
                                    arg_a33h0)
                                 arg_a33h1)
           (bound at Bug.hs:1153:23)
         sTs :: Sing [a_a337f] n_a1kQd (bound at Bug.hs:1143:34)
         sT :: Sing a_a337f n_a1kQc (bound at Bug.hs:1143:31)
         lambda_a33gY :: Sing [a_a337f] xs0_a33a0
                         -> Sing
                              [[a_a337f]]
                              (Apply [a_a337f] [[a_a337f]]
 (PermutationsSym0 a_a337f) t_a33gX)
           (bound at Bug.hs:1127:11)
         (Some bindings suppressed; use -fmax-relevant-binds=N or -fno-max-
 relevant-binds)
      |
 1328 |
 sInterleave'))
      |
 ^^^^^^^^^^^^
 }}}

--

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


More information about the ghc-tickets mailing list