-> Ether или в какую сторону смотреть ? что то туплю
Из IO достать значение через <-, и передать в функцию, которая принимает значение и возвращает Either
спасибо, это в сторону монад
буритто с котятами или цветных функций =)
что то туплю вот есть код getUrlResult :: Url -> Pos -> (NumberedUrlList, Url, Pos) getUrlResult url pos = (zip [(pos + 1) ..] urlList, nextUrl, (pos + (length urlList))) where (urlList, nextUrl) = spjPapers url все бы хорошо, но spjPapers возращает IO ([HtmlText], HtmlText) вот и вопрос, как бы это связать, хочеться хотябы майби
никак. надо, чтобы getUrlResult работала тоже в контексте IO, то есть getUrlResult :: Url -> Pos -> IO (NumberedUrlList, Url, Pos)
то есть получается практически все я перепишу на контекст IO, мне кажеться это не хорошо, и я как то не так проектирую функции, что практически все в контексте ио
да, получается так. либо наоборот, убирай IO оттуда, где оно не нужно
зачем IO в spjPapers?
оно туда попало из resp <- getHtml url а туда из resp <- httpLBS request через getResponseBody resp, то есть ИО двигается вверх... Что кажеться не хорошим
да, это нехорошо. обычно разделяют IO и логику. на верхнем уровне в контексте IO получают сырые данные из сети, а их разбор уже в чистой функции идёт
Вот и пытаюсь понять как сделать переход, понятно что структура функций не подходящая, в смысле какая какую вызывает, и что передает.... Собственно вопрос может в примерах... или более детальном подходе...
какой переход? просто пихать одно в другое не получается? main = do -- input rawData <- getRawData -- pure logic let result = parse rawData -- output print result
Это понятно, но нужен цикл, получения следуюищх данных на основе предыдущих, я пытался это все организовать, за счет формирования результатов по требованию, То есть постепенно формируя полный лист, но как только внизу, стало ИО, дальше либо его тащить наверх, либбо признать что сделал не правильно и переделать, склоняюсь к последнему . Спрашиваю про патерны
нет паттернов, тут надо применять SOLID, а именно — одно логическое действие на функцию, не соединять несоединяемое
Обсуждают сегодня