optparse-applicative не пустой строковый аргумент

Как реализовать непустой строковый аргумент?

parserStart :: Parser String
parser = strArgument (metavar "EXAMPLE") 

Как помешать ему успешно разобрать пустую строку - ""?

Имея предыдущий опыт работы с Parsec/Attoparsec, я предполагаю, что мог бы написать свой собственный синтаксический анализатор или, возможно, использовать что-то аппликативное для проверки значения и fail, если это пустая строка (я думаю, что это невозможно, поскольку для этого мне нужна монада)?


person Chris Stryczynski    schedule 21.04.2019    source источник


Ответы (1)


person    schedule
comment
Я обычно пишу эти вещи с Options.Applicative.eitherReader, который является небольшой оболочкой для этого шаблона связывания результата readerAsk и вызова fail или return соответственно: nonEmptyStr = eitherReader \case { "" -> Left "…"; x -> Right $ fromString x }BlockArguments тоже) - person Jon Purdy; 23.04.2019