Haskell Curl Help

Хорошо, я ' Я пытался осмыслить IO в Haskell, и решил, что для этого напишу небольшое небольшое приложение, работающее с веб-страницами. Фрагмент, в котором я споткнулся, - (с извинениями перед bobince , хотя, честно говоря, я не пытаюсь разбирать HTML здесь, просто извлекаю одно или два значения) :

titleFromUrl url = do
    (_, page) <- curlGetString url [CurlTimeout 60]   
    matchRegex (mkRegexWithOpts "(.*?)" False True) page

Вышеупомянутое должно принимать URL в строковой форме, сканировать страницу, на которую он указывает, с помощью matchRegex и возвращать либо Nothing , либо Just [a] , где a - согласованная (возможно, многострочная) строка. Разочаровывает то, что когда я пытаюсь выполнить

Prelude> (_, page) <- curlGetString url [CurlTimeout 60]
Prelude> matchRegex (mkRegexWithOpts "(.*?)" False True) page

в интерпретаторе, он делает именно то, что я хочу. Когда я пытаюсь загрузить то же выражение и связанный импортирует из файла, он дает мне ошибку вывода типа, указывающую, что он не может сопоставить ожидаемый тип 'IO b' с предполагаемым типом 'Maybe [String]' . Это говорит мне, что мне не хватает чего-то маленького и фундаментального, но я не могу понять, что именно. Я пробовал явно преобразовать страницу в строку, но это просто программирование по суеверию (и это не сработало в любом случае).

Есть подсказки?

5
задан Community 23 May 2017 в 12:04
поделиться