This makes MACT a monad transformer. It's very similar to the identity
monad transformer. It's actually exactly the same, except that MACT
has the phantom type l.
In keeping with the spirit of the style in mtl I have put the underlying
monad as the second-to-last type parameter of MACT. Also in keeping
with the style of mtl I have made MAC l a a type-synonym for
MAC l Identity a
So not with IO as the underlying monad. I believe this is the only
sensible choice, but I'm willing to let myself be convinced to the contrary.