継続モナド使おう。
http://hackage.haskell.org/packages/archive/mtl/2.1.2/doc/html/Control-Monad-Cont.html
import Control.Monad
import Control.Monad.Cont
main :: IO ()
main = do
(`runContT` const (return ())) $ do
callCC $ \k -> do
forM_ [1..10] $ \i -> do
when (i > 5) $ k ()
liftIO $ print i