Допустим, я создаю интерфейс с помощью следующей команды:
$ run --display (file/env/db) # default to file if invalid is entered
В частности, я ищу, как получить значение перечисления со следующим:
Данный:
data type = File | Env | Db
При вводе команды run --display file возвращается перечисление File.
Насколько я знаю, функции strOption и strArgument используются для любого произвольного строкового аргумента. Я прочитал полную документацию, но не смог найти простого решения этой проблемы. Любая помощь будет оценена по достоинству.





Вы можете работать с пользовательским парсером, например:
import Data.Char(toLower)
import Options.Applicative(ReadM, eitherReader)
data OutputType = File | Env | Db
parseOutputType :: ReadM OutputType
parseOutputType = eitherReader $ (go . map toLower)
where go "file" = Right File
go "env" = Right Env
go "db" = Right Db
go _ = Left "Enter a valid option: file, env, or db"а затем проанализируйте варианты с помощью:
import Options.Applicative
data MyOptions = MyOptions { display :: OutputType }
parseOptions :: Parser MyOptions
parseOptions = MyOptions <$> option parseOutputType (long "display")
Вы можете работать с пользовательской программой чтения: github.com/pcapriotti/optparse-applicative#option-readers