馬鹿が使うHaskellには副作用があるよ。賢い人が使えば副作用はないよ。

add x y = do {
x'<-x;
y'<-y;
print x';
print y';

x''<-x;
print x'';
y''<-y;
print y'';

return (x'+y');
}

main = add (add (return 1) (return 2)) (add (return 4) (return 8))