[GHC] #15603: ref6 example from StaticPointers documentation doesn't type check

GHC ghc-devs at haskell.org
Thu Sep 6 12:12:42 UTC 2018


#15603: ref6 example from StaticPointers documentation doesn't type check
-------------------------------------+-------------------------------------
        Reporter:  mpickering        |                Owner:  (none)
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:  8.6.1
       Component:  Compiler          |              Version:  8.4.3
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  None/Unknown      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by mpickering):

 The `static show` example also doesn't produce an error exactly like the
 implied one.

 {{{
 sp.hs:25:7: error:
     • No instance for (Typeable a0) arising from a static form
     • In the expression: static show
       In an equation for ‘foo’: foo = static show
    |
 25 | foo = static show
    |       ^^^^^^^^^^^

 sp.hs:25:14: error:
     • Ambiguous type variable ‘a0’ arising from a use of ‘show’
       prevents the constraint ‘(Show a0)’ from being solved.
       Relevant bindings include
         foo :: t0 (a0 -> String) (bound at sp.hs:25:1)
       Probable fix: use a type annotation to specify what ‘a0’ should be.
       These potential instances exist:
         instance Show (ST s a) -- Defined in ‘GHC.ST’
         instance Show StaticPtrInfo -- Defined in ‘GHC.StaticPtr’
         instance Show Ordering -- Defined in ‘GHC.Show’
         ...plus 25 others
         ...plus 12 instances involving out-of-scope types
         (use -fprint-potential-instances to see them all)
     • In the body of a static form: show
       In the expression: static show
       In an equation for ‘foo’: foo = static show
    |
 25 | foo = static show
    |              ^^^^
 }}}

 Then adding a type signature leads to the confusing error:

 {{{
 foo :: (Typeable a, Show a) => StaticPtr (a -> String)
 foo = static show
 }}}

 {{{
 sp.hs:26:14: error:
     • No instance for (Show a) arising from a use of ‘show’
     • In the body of a static form: show
       In the expression: static show
       In an equation for ‘foo’: foo = static show
    |
 26 | foo = static show
    |
 }}}

 The user guide should discuss why these errors happen to help
 understanding.

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


More information about the ghc-tickets mailing list