-> Maybe (a, String)
(там, где newtype)?
Все генераторы парсеров ниже в статье возвращают всегда список с 1 элементом
http://dev.stephendiehl.com/fun/002_parsers.html
Подозреваю, это чтобы поддерживать backtracking
any m StateT String {Maybe, [], Either String, ...} a
1) можно сделать парсер, который возвращает не один элемент 2) в стародавние времена когда это придумали - это было чтоб лист компрехеншоны можно было использовать
В 1 было бы Maybe ([a], String)
То есть backtracking тут не при чем?
речь не про возвращение нескольких распаршенных результатов, а вариантов парсинга, которые разные остатки дают
для бектракинга надо чтоб String был списком или с быстрой операцией взятия подстроки
оба варианта это два примитивных наивных варианта написания парсеров, один с бектрекингом, второй без. Первый на каждом шаге парсинга может разветвляться наверное можно даже сделать настраиваемый парсер, где на тайплевеле передается флаг бектрекинга, и подставляется нужный функтор, а код будет просто для любой монады
Обсуждают сегодня