[GHC] #9794: Additional assert function: assert :: Bool -> String -> a -> a

GHC ghc-devs at haskell.org
Wed Nov 12 21:47:16 UTC 2014


#9794: Additional assert function:  assert :: Bool -> String -> a -> a
-------------------------------------+-------------------------------------
              Reporter:  rodlogic    |            Owner:
                  Type:  feature     |           Status:  closed
  request                            |        Milestone:
              Priority:  normal      |          Version:  7.8.3
             Component:  Compiler    |         Keywords:
  (Type checker)                     |     Architecture:  Unknown/Multiple
            Resolution:  duplicate   |       Difficulty:  Unknown
      Operating System:              |       Blocked By:
  Unknown/Multiple                   |  Related Tickets:
       Type of failure:              |
  None/Unknown                       |
             Test Case:              |
              Blocking:              |
Differential Revisions:              |
-------------------------------------+-------------------------------------
Changes (by rodlogic):

 * status:  new => closed
 * resolution:   => duplicate


Comment:

 Replying to [comment:1 simonpj]:
 > The difficulty here is that these functions are not ''abstractable''.
 For example, in GHC we'd want a function
 > {{{
 > assertGHC :: Bool -> SDoc -> a -> a
 > }}}
 > where the second argument is an `SDoc` not a string.  We could define it
 in a library module, in terms your `assertStr`, thue:
 > {{{
 > assertGHC b doc x = assertStr b (showSDoc doc) x
 > }}}
 > but now the location reported would be in the library module.
 >
 > How to make this abstractable?  See #9049, esp
 [wiki:ExplicitCallStack/ImplicitLocations]
 >
 > I'm reluctant make the present thing a tiny bit better; I'd rather do
 something more thorough.  I'd be happy if someone made progress on #9049.
 >
 > Simon

 I now understand the basic problem and what you mean by 'abstractable': we
 can't just change the existing {{{GHC.Base.assert}}} function to include a
 message parameter and create a wrapper function to keep it backwards
 compatible. And introducing a new assertStr would require a second hard-
 coded wiring into the compiler to make it just like assert.

 I am new to GHC, but would be willing to give it a shot if you can give me
 a few pointers. For now, I will close this ticket as a duplicate of #9049
 to keep things centralized and add a reference back here.

 Moving to #9049 ...

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


More information about the ghc-tickets mailing list