On 12-10-01 05:34 AM, Jon Fairbairn wrote:
"Albert Y. C. Lai" <tre...@vex.net> writes:

On 12-09-30 06:33 PM, Jake McArthur wrote:
When discussing monads, at least, a side effect is an effect that is
triggered by merely evaluating an expression. A monad is an interface
that decouples effects from evaluation.

I don't understand that definition. Or maybe I do subconsciously.

I have

s :: State Int ()
s = do { x <- get; put (x+1) }

Is there an effect triggered by merely evaluating s?

I have

m :: IO ()
m = if True then putStrLn "x" else putChar 'y'

Is there an effect triggered by merely evaluating m?

What counts as "evaluate"?

Evaluation! Consider m `seq` 42. m is evaluated, but to no
effect.

Sure thing. So s has no side effect, and m has no side effect. Since they have no side effect, there is no effect to be decoupled from evaluation.

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to