+import "Prelude"\r
+\r
+inc :: Ref Integer -> <Proc> Integer\r
+inc r = do \r
+ v = getRef r\r
+ newV = v+1\r
+ r := newV\r
+ newV\r
+\r
+main = do\r
+ r = ref 0\r
+ // Because both map and for get side-effectful functions\r
+ // as parameters, the fusion is not allowed.\r
+ l = map (\_ -> inc r) [1..4] \r
+ for l (\i -> r := i+1)\r
+ getRef r\r
+--\r
+5\r