data Id a = Id a deriving Show instance Monad Id where Id x >>= f = f x return = Id
foo :: Int -> Id Int foo arg = do { x <- ID arg ; x <- ID (x * 2) ; x <- ID (x + 1) ; return x } というHaskell のプログラムと、 int foo (int arg) { int x; x = arg; x = x * 2; x = x + 1; return x; } は、そっくり。上は副作用をつかってないですけど、 下は副作用をつかっています。 そんだけ。