Hello,
I'm wondering how can I use Happstack's MACID in my application without breaking everything.

I have a monad like that:

type Comm = StateT Communication IO

type GameState a = StateT Game Comm a

and many functions like:
foo :: GameState ()
foo = do
   lift $ putComm <some message to player's channel>
   modify <someAction>

The state of the game is stored in Game.
Comm is used as an abstraction to communicate over several channels with players.

Whereas MACID asks to use:

type Update state = Ev (StateT state STM)

How can I use this without modifying everything??
I understand that MACID must record the <someAction> from above but the message should not.

Thanks for help!

Corentin