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 _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe