Safe Haskell | None |
---|---|

Language | Haskell98 |

- traceId :: String -> String
- traceShowId :: Show a => a -> a
- traceM :: Applicative f => String -> f ()
- traceShowM :: (Show a, Applicative f) => a -> f ()

# Documentation

Like `trace`

but returns the message instead of a third value.

*Since: 4.7.0.0*

traceShowId :: Show a => a -> a #

Like `traceShow`

but returns the shown value instead of a third value.

*Since: 4.7.0.0*

traceM :: Applicative f => String -> f () #

Like `trace`

but returning unit in an arbitrary `Applicative`

context. Allows
for convenient use in do-notation.

Note that the application of `traceM`

is not an action in the `Applicative`

context, as `traceIO`

is in the `IO`

type. While the fresh bindings in the
following example will force the `traceM`

expressions to be reduced every time
the `do`

-block is executed, `traceM "not crashed"`

would only be reduced once,
and the message would only be printed once. If your monad is in `MonadIO`

,
`liftIO . traceIO`

may be a better option.

... = do x <- ... traceM $ "x: " ++ show x y <- ... traceM $ "y: " ++ show y

*Since: 4.7.0.0*

traceShowM :: (Show a, Applicative f) => a -> f () #