Рассмотрим следующий фрагмент кода, используя ReadP
:
import Text.ParserCombinators.ReadP
readP_to_S (between (char '[') (char ']') (munch (/= ','))) "[234]"
Он выводит
[]
Согласно документации,
между :: ReadP open -> ReadP close -> ReadP a -> ReadP a Source #
между открытым закрытием p разбирает открытое, затем p и, наконец, закрытие.Возвращается только значение p.
Следовательно, я ожидаю, что возвращаемое значение будет
[("234", "")]
, так как первый анализатор соответствует открывающей скобке, а второй -закрывающая скобка, а последняя соответствует всему, кроме запятой.Почему это не так?