
But traceM will only work on non-lazy monads, such as Either or Maybe. On lazy monads, such as the lazy variants of State, Reader and Writer, you would need to write do {() <- traceM msg; ... } to ensure that the trace statement is output. Prelude> :set -fno-monomorphism-restriction Prelude> let m = do { traceM "hola" ; return 6} Prelude> m hola 6 Prelude> Data.Maybe.fromJust m hola 6 Prelude> head m hola 6 Prelude> Control.Monad.State.evalState m () 6 Cheers pepe On 16/10/2009, at 15:22, Martijn van Steenbergen wrote:
Hello,
I propose the addition of the following two functions to module Debug.Trace:
traceM :: Monad m => String -> m () traceM msg = trace msg (return ()) traceShowM :: (Show a, Monad m) => a -> m () traceShowM = traceM . show
These functions allow tracing in any do-block. I often define them myself; I think they are useful in general.
Deadline: 23 October 2009.
Martijn. _______________________________________________ Libraries mailing list Libraries@haskell.org http://www.haskell.org/mailman/listinfo/libraries