#haskell #types
#haskell #типы
Вопрос:
Я получаю эту ошибку в ghci, и я подозреваю, что ошибка не выражает реальную проблему.
No instances for (Control.Monad.IO.Class.MonadIO
GHC.Prim.Any(* -> *),
Failure HttpException GHC.Prim.Any(* -> *))
arising from a use of `httpLbsRedirect'
Possible fix:
add instance declarations for
(Control.Monad.IO.Class.MonadIO GHC.Prim.Any(* -> *),
Failure HttpException GHC.Prim.Any(* -> *))
In the expression: httpLbsRedirect test nManager
In an equation for `it': it = httpLbsRedirect test nManager
Вот что я делаю в ghci, чтобы решить эту проблему. Сначала я загружаю файл, содержащий некоторые импортные файлы, с которыми я хочу поиграть.Http-Enumerator является включенным, имеющим отношение к этой проблеме. Затем я делаю это:
nManager <- newManager
test <- parseUrl "https://pkg.cudaops.com/cgi-bin/qaLinkEditor.cgi?json=1"
:t test :: Request GHC.Prim.Any(* -> *)
ghcifoo> httpLbsRedirect test nManager
<interactive>:1:1:
No instances for (Control.Monad.IO.Class.MonadIO
GHC.Prim.Any(* -> *),
Failure HttpException GHC.Prim.Any(* -> *))
arising from a use of `httpLbsRedirect'
Possible fix:
add instance declarations for
(Control.Monad.IO.Class.MonadIO GHC.Prim.Any(* -> *),
Failure HttpException GHC.Prim.Any(* -> *))
In the expression: httpLbsRedirect test nManager
In an equation for `it': it = httpLbsRedirect test nManager
Когда я пытаюсь добавить экземпляр, который он говорит, что хочет, я получаю ошибки синтаксического анализа (* -> *). Это заставляет меня думать, что проблема кроется в другом. Не уверен, что делать. Освещение приветствуется.
Комментарии:
1. Какой пакет предоставляет импортируемый модуль? Какой модуль вы импортируете?
2. Я импортирую Network.HTTP.Enumerator, предоставляемый пакетом Http-Enumerator.
Ответ №1:
Ответ пришел от #haskell на freenode, от Twey.
Вы должны указать тип, возвращаемый parseUrl . Правильное использование было бы:
test <- (parseUrl «https://pkg.cudaops.com/cgi-bin/qaLinkEditor.cgi?json=1 «) :: (Ввод-вывод (Запрос ввода-вывода))
Комментарии:
1. В качестве альтернативы, вы можете поместить весь do-блок между:{ и :} в GHCi — тогда вывод типа может определить правильные типы.
2. Я почти понял это правильно, просто прочитав документы. Моя попытка была (запрос ввода-вывода). Когда это не сработало, я не знал достаточно, чтобы понять, что я был близок.