[GHC] #11661: Missing MonadFail instance for Q monad from TemplateHaskell

GHC ghc-devs at haskell.org
Tue Mar 1 19:29:08 UTC 2016


#11661: Missing MonadFail instance for Q monad from TemplateHaskell
-------------------------------------+-------------------------------------
        Reporter:  PeterTrsko        |                Owner:
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:
       Component:  Template Haskell  |              Version:  8.0.1-rc2
      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 rwbarton):

 `fail :: String -> Q a` is the standard way for Template Haskell code to
 report a fatal error. (Say you are writing a quasiquoter for regular
 expressions, and the regular expression is ill-formed.) See
 http://hackage.haskell.org/package/template-haskell-2.10.0.0/docs
 /Language-Haskell-TH.html#v:reportError.

 `error :: String -> Q a` also works, sort of. But the error is reported
 differently by GHC ("Exception when trying to run compile-time code:").

 `recover :: Q a -> Q a -> Q a` recovers from `fail`, but obviously not
 `error`. I don't know whether anyone actually uses `recover` though.

 I don't really understand all the issues around this `MonadFail` stuff but
 `Q`'s `fail` isn't something we should just sweep under the rug.

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


More information about the ghc-tickets mailing list