ekg/System/Remote/Counter/Internal.hs
2011-12-29 18:29:50 -08:00

20 lines
428 B
Haskell

{-# OPTIONS_HADDOCK not-home #-}
module System.Remote.Counter.Internal
(
Counter(..)
, new
, read
) where
import Data.IORef (IORef, newIORef, readIORef)
import Prelude hiding (read)
-- | A mutable, integer-valued counter.
newtype Counter = C { unC :: IORef Int }
-- | Create a new, zero initialized, counter.
new :: IO Counter
new = C `fmap` newIORef 0
read :: Counter -> IO Int
read = readIORef . unC