whileNothing :: Monad m => m (Maybe b) -> m b
whileNothing prompt = do
    resp <- prompt
    case resp of
        Just v -> pure v
        Nothing -> whileNothing prompt
whileNothing :: Monad m => m (Maybe b) -> m b
whileNothing prompt = do
    resp <- prompt
    case resp of
        Just v -> pure v
        Nothing -> whileNothing prompt
whileNothing prompt = do
    resp <- prompt
    case resp of
        Just v -> pure v
        Nothing -> whileNothing prompt