При попытке разобрать many p
, я не получить «р», ожидающее сообщения:Парсеки - «много» и сообщений об ошибках
> parse (many (char '.') >> eof) "" "a"
Left (line 1, column 1):
unexpected 'a'
expecting end of input
Сравнить с
> parse (sepBy (char '.') (char ',') >> eof) "" "a"
Left (line 1, column 1):
unexpected 'a'
expecting "." or end of input
который сообщает». " как я ожидал. many1 p <|> return []
работает также.
Все эти функции принимают пустой ввод, так почему же many
сообщить, что он ожидает? Это ошибка или функция?
Не должно быть скрытой детализацией реализации? 'many' также можно определить с помощью' <|> ', и из того, что я вижу, он не был определен таким образом по соображениям производительности. – hmp
@hmp: Наверное, должно быть, да. Хотя я ожидаю, что вам будет лучше подавать собственное сообщение с '(>)' в любом случае. –