我正在寻找一个库,它使用单子来抽象出命令行参数解析和帮助生成的繁琐过程。我已经想好了以下相当明显的用法模式:
main = do
portOrSocket <- Args.run $ do
mbSocket <- Args.read $ Args.Arg "s" "socket" "Description"
mbPort <- Args.read $ Args.Arg "p" "port" "Description"
case mbSocket of
Just socket -> return $ Right socket
Nothing -> case mbPort of
Just port -> return $ Left port
Nothing -> return $ Left defaultPort
...
以上代码包含了处理解析、验证和生成用法所需的所有信息,我认为相当容易理解。不幸的是,在研究 Hackage 并查看类似 cmdargs、cmdlib、parseargs 和 ReadArgs 等软件包之后,我发现没有任何一个与此相近的东西。但在开始实现之前,我想确保自己没有漏掉什么。因此,是否有类似于此问题的解决方案库?
optparse-applicative
吗? - Gabriella Gonzalezoptparse-applicative
给予 +1。它非常棒。 - jtobin