[GHC] #10097: GHC 7.11 errors on dictionary casting tricks

GHC ghc-devs at haskell.org
Tue Feb 17 10:45:13 UTC 2015


#10097: GHC 7.11 errors on dictionary casting tricks
-------------------------------------+-------------------------------------
              Reporter:  heisenbug   |             Owner:
                  Type:  bug         |            Status:  new
              Priority:  normal      |         Milestone:
             Component:  Compiler    |           Version:  7.11
              Keywords:              |  Operating System:  Unknown/Multiple
          Architecture:              |   Type of failure:  None/Unknown
  Unknown/Multiple                   |        Blocked By:
             Test Case:              |   Related Tickets:
              Blocking:              |
Differential Revisions:              |
-------------------------------------+-------------------------------------
 I am not saying this is a bug, it just seems to mess with techniques that
 assume white-box knowledge of GHC's dictionary-passing internals.

 So, I have this function (in the `gdiff` fork I am fooling around with):
 {{{
 iFeelDirty :: (forall ts . List f ts => f t ts -> Con f t) -> (forall ts .
 IsList f ts -> f t ts -> Con f t)
 iFeelDirty = unsafeCoerce
 }}}
 It compiles perfectly before 7.11, but now I get:
 {{{
 src/Data/Generic/Diff/Effectful.hs:139:14:
     No instance for (List f ts3)
     The type variable `ts3' is ambiguous
     Relevant bindings include
       iFeelDirty :: (forall ts. List f ts => f t ts -> Con f t)
                     -> forall ts. IsList f ts -> f t ts -> Con f t
         (bound at src/Data/Generic/Diff/Effectful.hs:139:1)
     In the expression: unsafeCoerce
     In an equation for `iFeelDirty': iFeelDirty = unsafeCoerce
 }}}

 For reference, this is the file I am looking at:
 https://github.com/ggreif/gdiff/blob/97b13e2dca0c35c2c53d5430f6f0700dc89938ec/src/Data/Generic/Diff/Effectful.hs#L138

 Looks like the old trick (also used by ekmett's `reflection` lib?) fails
 to deliver.

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


More information about the ghc-tickets mailing list