<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hi all,<div><br></div><div><br></div><div>I have used GetOpt in Python and Ocaml so I am reasonably familiar with it, and I have been studying the technique here:</div><div><br></div><div><br></div><div><a href="http://www.haskell.org/haskellwiki/High-level_option_handling_with_GetOpt">http://www.haskell.org/haskellwiki/High-level_option_handling_with_GetOpt</a></div><div><br></div><div><br></div><div>Can anyone explain to me what is actually happening here:</div><div><br></div><div><br></div><div><span class="Apple-style-span" style="font-family: Times; "><pre class="haskell" style="margin-left: 2em; ">    opts <span style="color: rgb(0, 0, 153); ">&lt;-</span> <a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:foldl"><span style="color: rgb(0, 102, 0); ">foldl</span></a> <span style="color: black; ">(</span><a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:&amp;gt;&amp;gt;="><span style="color: rgb(0, 102, 0); ">&gt;&gt;=</span></a><span style="color: black; ">)</span> <span style="color: black; ">(</span><a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:return"><span style="color: rgb(0, 102, 0); ">return</span></a> startOptions<span style="color: black; ">)</span> actions
&nbsp;
    <span style="color: rgb(0, 0, 153); ">let</span> Options <span style="color: black; ">{</span> optVerbose = verbose
                , optInput = input
                , optOutput = output   <span style="color: black; ">}</span> = opts</pre></span></div><div><span class="Apple-style-span" style="font-family: Times; "><pre class="haskell" style="margin-left: 2em; ">    input <a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:&amp;gt;&amp;gt;="><span style="color: rgb(0, 102, 0); ">&gt;&gt;=</span></a> output</pre></span></div><div><br></div><div>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?</div><div><br></div><div><br></div><div><br></div><div>Any insight gratefully received :-)</div><div><br></div><div><br></div><div><br></div><div>Thanks,</div><div><br></div><div><br></div><div><br></div><div><br></div><div>G</div><div><br></div></body></html>