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'" )