Есть ли способ извлечь список имен и типов из программы командной строки, созданной с использованием optparse-applicative
?
Я +/- ищу какую-то функцию типа ParserInfo a -> [(String,TypeRep)]
Есть ли способ извлечь список имен и типов из программы командной строки, созданной с использованием optparse-applicative
?
Я +/- ищу какую-то функцию типа ParserInfo a -> [(String,TypeRep)]
Нет, нет пути. Соответствующие биты:
data ParserInfo a = ParserInfo
{ infoParser :: Parser a
, -- ...
}
data Parser a
= forall x . MultP (Parser (x -> a)) (Parser x)
| forall x . BindP (Parser x) (x -> Parser a)
| -- ...
Поскольку x
из MultP
и BindP
экзистенциально квантифицируются и не несут ограничения Typeable
, информация о типах, используемых в листьях дерева Parser a
, теряется во время выполнения.
work2 :: Parser a -> IO () work2 p = (mapParser (\_ -> optionNames . optMain) p ) & print
- person nicolas; 18.07.2018