Haskell 如何为Options.Applicative中的字符串选项提供默认值
如何通过Haskell 如何为Options.Applicative中的字符串选项提供默认值,haskell,Haskell,如何通过strOption指示默认值?未显示如何为strOption创建默认值,例如 data Sample = Sample { hello :: String , quiet :: Bool } sample :: Parser Sample sample = Sample <$> strOption ( long "hello" <> metavar "TARGET" <> help
strOption
指示默认值?未显示如何为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" )
编辑
我想我在Options.Applicative.Builder
中的值
修饰符中找到了答案,引用自述文件:
解析器是Applicative和Alternative的实例
这意味着您应该能够指定如下默认值:
someOption <|> pure "thisIsUsedIfSomeOptionWasn'tPassed"
如果这种情况还没有以某种形式出现,我会感到惊讶。这种情况确实存在,尽管在文档中很难找到 例如:
strOption ( long "some-opt"
<> value "default value"
<> metavar "SOMEOPT"
<> help "an option demonstrating the use of `value'" )
strOption(长“某些选项”
值“默认值”
metavar“SOMEOPT”
帮助“一个演示“值”用法的选项”
如果您找到了答案,请将其添加为您自己的答案,以便人们可以对其进行投票并接受。
defaultValue :: Alternative f => a -> f a -> f a
defaultValue = flip (<|>) . pure
optionWithDefault :: Parser String
optionWithDefault = defaultValue "defaultValue" option
strOption ( long "some-opt"
<> value "default value"
<> metavar "SOMEOPT"
<> help "an option demonstrating the use of `value'" )