我是 Haskell 新手。作为一项学习练习,我正在尝试将我的一个 Rust 程序移植到 Haskell。在 Rust 中,我使用了令人惊叹的clap
包,并且被Options.Applicative
认为是一个好看的替代品。这是一个例子:
import Options.Applicative
import Data.Semigroup ((<>))
data Sample = Sample
{ tod :: Bool
, pmc :: Bool
, tai :: Bool
}
sample :: Parser Sample
sample = Sample
<$> switch
( long "tod"
<> short 'o'
<> help "Convert from TOD" )
<*> switch
( long "pmc"
<> short 'p'
<> help "Convert from PMC" )
<*> switch
( long "tai"
<> short 't'
<> help "Set TAI mode" )
main :: IO ()
main = greet =<< execParser opts
where
opts = info (sample <**> helper) ( fullDesc )
greet :: Sample -> IO ()
greet (Sample a b c) = print [a,b,c]
走到这一步,我撞到了一堵砖墙。我需要使“tod”和“pmc”标志互斥。包 README 中有一个使用 <|> 的示例,但它不适用于布尔标志,我不知道如何转换它。
有人可以帮忙吗?