如何通过strOption
指示默认值? documentation for the optparse-applicative library未显示如何为strOption创建默认值,例如
data Sample = Sample
{ hello :: String
, quiet :: Bool }
sample :: Parser Sample
sample = Sample
<$> strOption
( long "hello"
<> metavar "TARGET"
<> help "Target for the greeting" )
<*> switch
( long "quiet"
<> help "Whether to be quiet" )
虽然它确实显示了如何为标志选项提供默认值。例如,Normal
是
data Verbosity = Normal | Verbose
flag Normal Verbose
( long "verbose"
<> short 'v'
<> help "Enable verbose mode"
修改
我想我在value
中的Options.Applicative.Builder
修饰符中找到了答案。
答案 0 :(得分:12)
这确实存在,如value
,尽管在文档中很难找到。
示例:
strOption ( long "some-opt"
<> value "default value"
<> metavar "SOMEOPT"
<> help "an option demonstrating the use of `value'" )
答案 1 :(得分:5)
引用自述文件:
解析器是Applicative和Alternative
的实例
这意味着你应该能够像这样指定默认值:
someOption <|> pure "thisIsUsedIfSomeOptionWasn'tPassed"
您可以像这样创建一个默认的组合器
defaultValue :: Alternative f => a -> f a -> f a
defaultValue = flip (<|>) . pure
并像这样使用
optionWithDefault :: Parser String
optionWithDefault = defaultValue "defaultValue" option
如果不是已经以某种形式存在,我会感到惊讶。