Я пытаюсь очистить веб-страницу с помощью Haskell и скомпилировать результаты в объект.
Если по какой-то причине я не могу получить все элементы со страниц, я хочу перестать пытаться обработать страницу и вернуться раньше.
Например:
scrapePage :: String -> IO ()
scrapePage url = do
doc <- fromUrl url
title <- liftM headMay $ runX $ doc >>> css "head.title" >>> getText
when (isNothing title) (return ())
date <- liftM headMay $ runX $ doc >>> css "span.dateTime" ! "data-utc"
when (isNothing date) (return ())
-- etc
-- make page object and send it to db
return ()
Проблема заключается в том, что when
не останавливает блок do или не выполняет другие части.
Каков правильный способ сделать это?