
On 05/08/10 20:18, Gaius Hammond wrote:
Hi all,
I have used GetOpt in Python and Ocaml so I am reasonably familiar with it, and I have been studying the technique here:
http://www.haskell.org/haskellwiki/High-level_option_handling_with_GetOpt
Can anyone explain to me what is actually happening here:
opts <- foldl (>>=) (return startOptions) actions
let Options { optVerbose = verbose , optInput = input , optOutput = output } = opts input >>= output
I understand the fold is evaluating everything in the actions list overlaying them onto the startOptions record, then getting these out of IO and into the opts record - but where are "verbose", "input" and "output" coming from? Are they just aliases?
It's an example of pattern matching, it "picks apart" 'opts'. So, yes, they are aliases for the values of the "members" of 'opts'. /M