Я пытаюсь использовать optparse-applicative, чтобы разобрать Maybe String
, но я не могу найти нигде, как бороться с Maybe
. Единственное, что я нашел, это добавить значение по умолчанию, но мне действительно нужен Nothing
, если пользователь не предоставил опцию вместо ""
. Есть ли способ достичь этого?Как разобрать Может быть с optparse-applyative
Вот пример рабочего кода:
import Options.Applicative
data Config = Config
{ cIn :: String
, cOut :: String
} deriving Show
configParser :: Parser Config
configParser = Config
<$> strOption (long "in" <> short 'i')
<*> strOption (long "out" <> short 'o')
main :: IO()
main = do
conf <- execParser (info configParser fullDesc)
print conf
Однако, я хотел бы параметры быть факультативным и использовать Maybe String
вместо String
в Config
:
data Config = Config
{ cIn :: Maybe String
, cOut :: Maybe String
} deriving Show
Я не знаю 'optparse-applyative', но [эта страница] (https://hackage.haskell.org/package/optparse-applicative-0.11.0.2) предполагает, что применение комбинатора' optional' поверх 'strOption' должен делать то, что вы хотите. – Jubobs
Я не видел, чтобы в нижней части страницы находился дополнительный документ. Это работает. Можете ли вы опубликовать его в качестве ответа, и я приму его. – mb14