[GHC] #7626: Add common utility variants of trace to Debug.Trace

#7626: Add common utility variants of trace to Debug.Trace -----------------------------+---------------------------------------------- Reporter: chrisseaton | Owner: Type: feature request | Status: new Priority: normal | Component: libraries/base Version: 7.6.1 | Keywords: trace Os: Unknown/Multiple | Architecture: Unknown/Multiple Failure: None/Unknown | Blockedby: Blocking: | Related: -----------------------------+---------------------------------------------- As discussed on the libraries list. http://www.haskell.org/pipermail/libraries/2013-January/019319.html 'traceId' traces a value, and then returns that same value. This avoids the common case of 'trace a a'. {{{ traceId :: String -> String traceId a = trace a a }}} 'traceM' runs 'trace' and returns unit in an arbitrary monad. This is useful for writing traces in do-notation, as each can sit on their own line. {{{ traceM :: (Monad m) => String -> m () traceM string = trace string $ return () }}} For example: {{{ ... = do x <- ... traceM $ "x: " ++ show x y <- ... ... }}} That application of 'traceM' there can be temporarily commented out with a simple line comment. Finally, equivalents of 'traceShow' for those two functions. {{{ traceShowId :: (Show a) => a -> a traceShowId a = trace (show a) a }}} {{{ traceShowM :: (Show a, Monad m) => a -> m () traceShowM = traceM . show }}} Advantages: I use these functions in my code all the time. When I discussed it on the libraries list there were several enthusiastic +1s of people doing the same. Disadvantages: The documentation in the patch makes it clear that traceM does not actually add a trace action to the monad you're using, which is a potential point of confusion (http://www.haskell.org/pipermail/libraries/2013-January/019322.html). I had originally suggested that 'traceIO == traceM', but it turns out this is not so. Henning Thielemann suggested that 'traceM' was better achieved with directly using 'trace' and 'printf' (http://www.haskell.org/pipermail/libraries/2013-January/019320.html). Of course, any function can be replaced with its RHS, and whether or not the user uses 'show' or 'printf' or whatever is orthogonal. I haven't written any tests, as it's all output generating code, so I'm really not sure how that's tested in GHC - sorry. Status of patch: Applies against base 3b51b741f45d4d85e79b2128d00479ce230f72f2 and compiles with GHC 388e1e825f79f2d16536fc583a48e5ce9c191b06. I've run a full GHC compile cycle with it without problem. Includes documentation. -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/7626 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#7626: Add common utility variants of trace to Debug.Trace -----------------------------+---------------------------------------------- Reporter: chrisseaton | Owner: Type: feature request | Status: new Priority: normal | Component: libraries/base Version: 7.6.1 | Keywords: trace Os: Unknown/Multiple | Architecture: Unknown/Multiple Failure: None/Unknown | Blockedby: Blocking: | Related: -----------------------------+---------------------------------------------- Changes (by romildo): * cc: malaquias@… (added) -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/7626#comment:1 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#7626: Add common utility variants of trace to Debug.Trace ---------------------------------+------------------------------------------ Reporter: chrisseaton | Owner: Type: feature request | Status: patch Priority: normal | Milestone: 7.8.1 Component: libraries/base | Version: 7.6.1 Keywords: trace | Os: Unknown/Multiple Architecture: Unknown/Multiple | Failure: None/Unknown Difficulty: Unknown | Testcase: Blockedby: | Blocking: Related: | ---------------------------------+------------------------------------------ Changes (by igloo): * status: new => patch * difficulty: => Unknown * milestone: => 7.8.1 -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/7626#comment:2 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#7626: Add common utility variants of trace to Debug.Trace -------------------------------+-------------------------------------------- Reporter: chrisseaton | Owner: Type: feature request | Status: closed Priority: normal | Milestone: 7.8.1 Component: libraries/base | Version: 7.6.1 Resolution: fixed | Keywords: trace Os: Unknown/Multiple | Architecture: Unknown/Multiple Failure: None/Unknown | Difficulty: Unknown Testcase: | Blockedby: Blocking: | Related: -------------------------------+-------------------------------------------- Changes (by igloo): * status: patch => closed * resolution: => fixed Comment: Applied, thanks -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/7626#comment:3 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler
participants (1)
-
GHC