169 похожих чатов

А как ловят такое ghci> res <- getPos2 urlt 0

(alist !! 0)
200
ghci> res
SearchAtom (Search "www.google.com" "/search?q=" "Haskell") "haskell.org" (SearchTS [(2024-05-06 07:16:01.522354643 UTC,2)])
ghci> urlt2 = search2Url (Search "www.google.com" "/search?q=" "\1044\1091\1073\1083\1077\1088\1080\1085")
ghci> res2 <- getPos2 urlt2 0 (alist !! 1)
200
200
200
*** Exception: Prelude.head: empty list
CallStack (from HasCallStack):
error, called at libraries/base/GHC/List.hs:1644:3 in base:GHC.List
errorEmptyList, called at libraries/base/GHC/List.hs:87:11 in base:GHC.List
badHead, called at libraries/base/GHC/List.hs:83:28 in base:GHC.List
head, called at app/Main.hs:139:28 in main:Main

то есть если нашел, то все ок, а вот если сразу нет, то

14 ответов

78 просмотров

смотри последнюю строчку head, called at app/Main.hs:139:28 in main:Main

Fedor- Автор вопроса
Cheese Syrowiecki
смотри последнюю строчку head, called at app/Main....

вот она processHtml :: HtmlText -> ([Url], Url) processHtml resp = (links, head next) where tree = parseTree resp treeU = universeTree tree next = [ getHref x | x@(TagBranch tagName attrs _) <- treeU, (tagName == "a") && isSubsetOf nextAttr attrs] links = [ getHref x | x@(TagBranch tagName attrs _) <- treeU, (tagName == "a") && isSubsetOf linkAttr attrs] я могу больше проверок поставить, но как посмотреть состояние внутри геенратора списка

Fedor
вот она processHtml :: HtmlText -> ([Url], Url) pr...

никак. у тебя список пустой. надо подумать, почему список получился пустой, почему фильтр выкинул все элементы, и проверить

Fedor
вот она processHtml :: HtmlText -> ([Url], Url) pr...

можно печатать переменные с помощью Debug.Trace

Fedor- Автор вопроса
Cheese Syrowiecki
никак. у тебя список пустой. надо подумать, почему...

Это я понимаю, не понимаю, почему он пустой на третий цикл.....

Fedor
вот она processHtml :: HtmlText -> ([Url], Url) pr...

скобки вокруг (tagName == "a") не нужны

Fedor
Это я понимаю, не понимаю, почему он пустой на тре...

потому что фильтр не нашёл ни одного элемента по условию. потому что их там нет.

Fedor- Автор вопроса
Cheese Syrowiecki
скобки вокруг (tagName == "a") не нужны

Это уберу, врядли причина ошибки....

Fedor
Это я понимаю, не понимаю, почему он пустой на тре...

но это уже вопрос не о Хаскеле, а о твоей предметной области

Fedor- Автор вопроса
Cheese Syrowiecki
потому что фильтр не нашёл ни одного элемента по у...

проблемма в том что последовательный запуск дает разные результаты вот например res2 <- getPos2 urlt2 0 (alist !! 1) 200 200 200 200 200 200 *** Exception: HttpExceptionRequest Request { host = "q=%D0%94%D1%83%D0%B1%D0%BB%D0%B5%D1%80%D0%B8%D0%BD&sca_esv=70d17c20703d2a91&ei=-IY4ZorVJ5mExc8PudG6SA&start=10&sa=N" port = 443 secure = True requestHeaders = [("User-Agent","Mozilla/5.0 (X11; Linux x86_64; rv:124.0) Gecko/20100101 Firefox/124.0")] path = "" queryString = "" method = "GET" proxy = Nothing rawBody = False redirectCount = 10 responseTimeout = ResponseTimeoutDefault requestVersion = HTTP/1.1 proxySecureMode = ProxySecureWithConnect } (ConnectionFailure Network.Socket.getAddrInfo (called with preferred socket type/protocol: AddrInfo {addrFlags = [AI_ADDRCONFIG], addrFamily = AF_UNSPEC, addrSocketType = Stream, addrProtocol = 0, addrAddress = 0.0.0.0:0, addrCanonName = Nothing}, host name: Just "q=%D0%94%D1%83%D0%B1%D0%BB%D0%B5%D1%80%D0%B8%D0%BD&sca_esv=70d17c20703d2a91&ei=-IY4ZorVJ5mExc8PudG6SA&start=10&sa=N", service name: Just "443"): does not exist (Name or service not known)) то есть там он упал на 4ой итерации с пустым списком, а тут упал понятно, относительно, но на 7ой итерации, я спрашиваю про механику как ловят, а не в конкретике

Fedor
проблемма в том что последовательный запуск дает р...

что же меняется между запусками? если у тебя только сервер и твоя программа. программа не меняется, значит, что?

Fedor- Автор вопроса
Cheese Syrowiecki
что же меняется между запусками? если у тебя тольк...

да я понимаю, что поменялись данные на серваке, которые он выдает, просто сбрасывать в файлы и искать там различия... Это понятно, просто спрашивал про то как обычно с этим поступают..

Fedor
да я понимаю, что поменялись данные на серваке, ко...

можно не использовать head например и доступ по индексу, котороо может не существовать

Fedor
да я понимаю, что поменялись данные на серваке, ко...

ну вот выше основной список средств отладки перечислили

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта