Как указать значение по умолчанию для параметра string в Options.Аппликативный
Как указать значение по умолчанию через strOption? The документация для библиотеки optparse-applicative не показывает, как создать значение по умолчанию для 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.
2 ответов
цитируя readme:
анализаторы экземпляры аппликационной и альтернативных
что означает, что вы должны просто иметь возможность указать значения по умолчанию, как это:
someOption <|> pure "thisIsUsedIfSomeOptionWasn'tPassed"
вы можете создать комбинатор по умолчанию, как это
 defaultValue :: Alternative f => a -> f a -> f a
 defaultValue = flip (<|>) . pure
и использовать его так
 optionWithDefault :: Parser String
 optionWithDefault = defaultValue "defaultValue" option
Я был бы удивлен, если бы это не существовало уже в какой-то форме.
Это действительно существует, как value, хотя это довольно трудно найти в документации.
пример:
strOption  ( long "some-opt"
          <> value "default value"
          <> metavar "SOMEOPT"
          <> help "an option demonstrating the use of `value'" )