Jak zrobić powrót do bloku?
Próbuję zeskrobać stronę za pomocą Haskell i skompilować wyniki w obiekt.
Jeśli z jakiegoś powodu nie mogę pobrać wszystkich elementów ze stron, chcę przestać próbować przetwarzać stronę i wrócić wcześniej.
Na przykład:
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 ()
Problemem jestwhen
nie zatrzymuje bloku do wykonania ani nie pozwala na wykonanie innych części.
Jak to zrobić w odpowiedni sposób?