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 ответов

76 просмотров

смотри последнюю строчку 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
да я понимаю, что поменялись данные на серваке, ко...

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

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта