Каков предпочтительный способ вызвать ошибки (ParseError) в Parsec? Я получил некоторый код внутри парсера, который выполняет проверку, и, если проверка не удалась, должен быть возвращен ParseError (т.е. Left ParseError при запуске parse).
ParseError
Left ParseError
parse
Для этого вы можете использовать Text.ParserCombinators.Parsec.Prim.unexpected и Control.Monad.fail. Оба принимают аргумент String, обозначающий сообщение об ошибке, и возвращают (в данном случае) значение типа GenParser tok st a.
Text.ParserCombinators.Parsec.Prim.unexpected
Control.Monad.fail
String
GenParser tok st a
Подробнее см. Text.ParserCombinators.Parsec.Error, в частности Message. Там вы можете прочитать, какую функцию использовать в каком случае (хотя оба означают ошибку разбора, они семантически немного отличаются).
Text.ParserCombinators.Parsec.Error
Message