packages feed

atomic-modify-general-0.1.0.0: test/Main.hs

{-# language DeriveGeneric #-}
module Main (main) where
import Data.IORef
import Data.IORef.AtomicModify.Generic
import Control.Monad
import GHC.Generics

data Pair a b = Pair a b
  deriving (Show, Generic)

main :: IO ()
main = do
  ref <- newIORef (1 :: Int)
  replicateM_ 5 $ atomicModifyIORef2Native ref (\i -> Pair (i + 1) i) >>= print