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?



Any insight gratefully received :-)



Thanks,




G