Depends on the semantics of the monad. If you want to control that kind of thing, you can use Strategies from Control.Concurrent. If you just want to force things, then abstract-par [1] and monad-par [2] have some pretty convenient semantics.
[1] http://hackage.haskell.org/package/abstract-par/
[2] http://hackage.haskell.org/package/monad-par/