[Haskell-cafe] GetOpt
Einar Karttunen
ekarttun at cs.helsinki.fi
Wed Apr 26 19:26:22 EDT 2006
On 26.04 11:29, Anton Kulchitsky wrote:
> I just started to study Haskell and it is my almost first big experience
> with functional languages (except Emacs Lisp and Python). I enjoyed all
> small exercises and started a bigger business writing a general utility.
> However, I have a problem from the beginning. The utility get some file
> and convert it to another format. It is a kind of small compiler. It
> also accepts many parameters and behaves depending on them. The problem
> is how to do this neat! How should I write my program to accept and
> neatly work with options????
One solution is to have a datatype for configuration:
> data Config = Config { mode :: Mode,
> infile :: Maybe FilePath,
> outfile :: Maybe FilePath
> }
> nullConfig = Config Normal "-" "-"
> data Mode = Normal | Version | Help
and handle options as functions from Config to Config:
> Option ['i'] ["input"] (ReqArg (\x c -> c { infile = Just x }) "file") "input file name"
and then handle the parsed options like:
> case conf of
> Config Normal (Just i) (Just o) -> ...
> Config Normal _ _ -> both input and output must be specified
> Config Help _ _ -> help message
- Einar Karttunen
More information about the Haskell-Cafe
mailing list