
1 Oct
2012
1 Oct
'12
12:12 a.m.
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"?