packages feed

setters-0.1: Test.hs

{-# LANGUAGE TemplateHaskell #-}

import Control.Monad
import Control.Monad.Trans
import Control.Monad.State

import Control.Monad.State.Puts
import Data.Setters

data Record = Record {
  count :: Int,
  flag :: Bool }
  deriving (Eq, Show)

$(declareSetters ''Record)

testState :: StateT Record IO ()
testState = do
  cnt <- gets count
  puts setCount (cnt + 1)
  puts setFlag (odd cnt)
  liftIO $ print cnt

main = do
  runStateT (replicateM 10 testState) (Record 0 False)
  return ()