One thing that has always confused me is whether or not it\'s an okay time to use an IORef. Are there any guidelines that should be followed when deciding whether or not to use
Hmm. You'd use an IORef when you need some mutable state but are in a single threaded environment. Or when you want a mutable field inside a larger structure that is in turn held by a synchronization variable.
In general, use MVars. They have more robust semantics.