doUntil :: IO Bool -> IO a -> IO ()
doUntil cond act = do act
                      tf <- cond 
                      if tf then doUntil cond act else return ()
doUntil :: IO Bool -> IO a -> IO ()
doUntil cond act = do act
                      tf <- cond 
                      if tf then doUntil cond act else return ()
doUntil cond act = do act
                      tf <- cond 
                      if tf then doUntil cond act else return ()