(типизированный) список аргументов из программы, использующей optparse-appplicative

Есть ли способ извлечь список имен и типов из программы командной строки, созданной с использованием optparse-applicative?

Я +/- ищу какую-то функцию типа ParserInfo a -> [(String,TypeRep)]


person nicolas    schedule 18.07.2018    source источник


Ответы (1)


Нет, нет пути. Соответствующие биты:

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, теряется во время выполнения.

person Daniel Wagner    schedule 18.07.2018
comment
отличный момент. можно получить имена только с помощью work2 :: Parser a -> IO () work2 p = (mapParser (\_ -> optionNames . optMain) p ) & print - person nicolas; 18.07.2018