data Config = Config {
a :: Bool,
b :: Type1,
c :: Type2
}
pA :: Parser Bool
pB :: Parser Type1
pC :: Parser Type2
pConfig :: Parser Config
pConfig = Config <$> pA <*> pB <*> pC
opts :: ParserInfo Config
opts = info (pConfig <**> helper)
(fullDesc <> progDesc "My CLI" <> header "CLI executable")
main :: IO()
main = do
(Config a b c) <- execParser opts
-- Populate a default config using a b c values
是否可以部分解析产品类型?Config 是具有成员 a、b 和 c 的产品类型,并假设它来自库,所以我无法重新定义它。我只想解析a和b而不关心c。但是,由于“解析器配置”只能具有如下结构
Config <$> pA <*> pB <*> pC
由于是一种产品类型,如果我不给出“PC”,它就会出错。如何正确处理这种情况?