import "Prelude" inc :: Ref Integer -> Integer inc r = do v = getRef r newV = v+1 r := newV newV main = do r = ref 0 l = map (\_ -> inc r) [1..4] r := 4 // Map must be executed before this statement foldl (+) 0 l -- 10