Как указать значение по умолчанию для параметра 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'" )