packages feed

paragon-0.1.19: src/Language/Java/Paragon/Monad/Uniq.hs

module Language.Java.Paragon.Monad.Uniq 
    ( Uniq, initUniq, getUniq ) where

import Data.IORef

newtype Uniq = Uniq (IORef Int)

initUniq :: IO Uniq
initUniq = newIORef 0 >>= return . Uniq

getUniq :: Uniq -> IO Int
getUniq (Uniq u) = do i <- readIORef u
                      writeIORef u (i+1)
                      return i