<div dir="ltr">On Fri, Feb 22, 2013 at 7:27 PM, xiao Ling <span dir="ltr">&lt;<a href="mailto:lingxiao@seas.upenn.edu" target="_blank">lingxiao@seas.upenn.edu</a>&gt;</span> wrote:<div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr"><div style="vertical-align:baseline;line-height:17.600000381469727px;width:660px;font-size:13.600000381469727px;font-family:Arial,&#39;Liberation Sans&#39;,&#39;DejaVu Sans&#39;,sans-serif;margin:0px 5px 5px 0px;border:0px;padding:0px">
<pre style="margin-top:0px;margin-bottom:10px;padding:5px;border:0px;vertical-align:baseline;background-color:rgb(238,238,238);font-family:Consolas,Menlo,Monaco,&#39;Lucida Console&#39;,&#39;Liberation Mono&#39;,&#39;DejaVu Sans Mono&#39;,&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace,serif;overflow:auto;width:auto;max-height:600px">
<code style="margin:0px;padding:0px;border:0px;vertical-align:baseline;font-family:Consolas,Menlo,Monaco,&#39;Lucida Console&#39;,&#39;Liberation Mono&#39;,&#39;DejaVu Sans Mono&#39;,&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace,serif"><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">h </span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">::</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> M Int </span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">-&gt;</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> M Int </span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">-&gt;</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> M Int 
h x y </span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">=</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> bind </span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">(</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> </span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">\</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">x</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">-&gt;</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> g x y </span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">)</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> x</span></code></pre>


<p style="margin:0px 0px 1em;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;clear:both;word-wrap:break-word">where g is</p><pre style="margin-top:0px;margin-bottom:10px;padding:5px;border:0px;vertical-align:baseline;background-color:rgb(238,238,238);font-family:Consolas,Menlo,Monaco,&#39;Lucida Console&#39;,&#39;Liberation Mono&#39;,&#39;DejaVu Sans Mono&#39;,&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace,serif;overflow:auto;width:auto;max-height:600px">
<code style="margin:0px;padding:0px;border:0px;vertical-align:baseline;font-family:Consolas,Menlo,Monaco,&#39;Lucida Console&#39;,&#39;Liberation Mono&#39;,&#39;DejaVu Sans Mono&#39;,&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace,serif"><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">g </span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">::</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> Int </span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">-&gt;</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> W Int </span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">-&gt;</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> W Int
g x y </span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">=</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> y </span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">&gt;&gt;=</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> </span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">(</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">return </span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">.</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> </span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">(+</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">x</span><span style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">))</span></code></pre>


<p style="margin:0px 0px 1em;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;clear:both;word-wrap:break-word">for the monad:</p><p style="margin:0px 0px 1em;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;clear:both;word-wrap:break-word">


<code style="margin:0px;padding:1px 5px;border:0px;vertical-align:baseline;background-color:rgb(238,238,238);font-family:Consolas,Menlo,Monaco,&#39;Lucida Console&#39;,&#39;Liberation Mono&#39;,&#39;DejaVu Sans Mono&#39;,&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace,serif">data M a = M a deriving Show</code></p>


<p style="margin:0px 0px 1em;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;clear:both;word-wrap:break-word">Now I am a little confused, how can you put x in g if it takes an <code style="margin:0px;padding:1px 5px;border:0px;vertical-align:baseline;background-color:rgb(238,238,238);font-family:Consolas,Menlo,Monaco,&#39;Lucida Console&#39;,&#39;Liberation Mono&#39;,&#39;DejaVu Sans Mono&#39;,&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace,serif">Int</code> as first parameter but x is <code style="margin:0px;padding:1px 5px;border:0px;vertical-align:baseline;background-color:rgb(238,238,238);font-family:Consolas,Menlo,Monaco,&#39;Lucida Console&#39;,&#39;Liberation Mono&#39;,&#39;DejaVu Sans Mono&#39;,&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace,serif">M Int</code>?</p>
</div></div></blockquote><div>Because it&#39;s a different &quot;x&quot;.  Lemme rewrite it slightly:</div><div><br></div><div><span style="font-family:Consolas,Menlo,Monaco,&#39;Lucida Console&#39;,&#39;Liberation Mono&#39;,&#39;DejaVu Sans Mono&#39;,&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace,serif;font-size:14px;line-height:17.59375px;margin:0px;padding:0px;border:0px;vertical-align:baseline">h </span><span style="font-family:Consolas,Menlo,Monaco,&#39;Lucida Console&#39;,&#39;Liberation Mono&#39;,&#39;DejaVu Sans Mono&#39;,&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace,serif;font-size:14px;line-height:17.59375px;margin:0px;padding:0px;border:0px;vertical-align:baseline">::</span><span style="font-family:Consolas,Menlo,Monaco,&#39;Lucida Console&#39;,&#39;Liberation Mono&#39;,&#39;DejaVu Sans Mono&#39;,&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace,serif;font-size:14px;line-height:17.59375px;margin:0px;padding:0px;border:0px;vertical-align:baseline"> M Int </span><span style="font-family:Consolas,Menlo,Monaco,&#39;Lucida Console&#39;,&#39;Liberation Mono&#39;,&#39;DejaVu Sans Mono&#39;,&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace,serif;font-size:14px;line-height:17.59375px;margin:0px;padding:0px;border:0px;vertical-align:baseline">-&gt;</span><span style="font-family:Consolas,Menlo,Monaco,&#39;Lucida Console&#39;,&#39;Liberation Mono&#39;,&#39;DejaVu Sans Mono&#39;,&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace,serif;font-size:14px;line-height:17.59375px;margin:0px;padding:0px;border:0px;vertical-align:baseline"> M Int </span><span style="font-family:Consolas,Menlo,Monaco,&#39;Lucida Console&#39;,&#39;Liberation Mono&#39;,&#39;DejaVu Sans Mono&#39;,&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace,serif;font-size:14px;line-height:17.59375px;margin:0px;padding:0px;border:0px;vertical-align:baseline">-&gt;</span><span style="font-family:Consolas,Menlo,Monaco,&#39;Lucida Console&#39;,&#39;Liberation Mono&#39;,&#39;DejaVu Sans Mono&#39;,&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace,serif;font-size:14px;line-height:17.59375px;margin:0px;padding:0px;border:0px;vertical-align:baseline"> M Int </span></div>
<div><span style="font-family:Consolas,Menlo,Monaco,&#39;Lucida Console&#39;,&#39;Liberation Mono&#39;,&#39;DejaVu Sans Mono&#39;,&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace,serif;font-size:14px;line-height:17.59375px;margin:0px;padding:0px;border:0px;vertical-align:baseline">h x y </span><span style="font-family:Consolas,Menlo,Monaco,&#39;Lucida Console&#39;,&#39;Liberation Mono&#39;,&#39;DejaVu Sans Mono&#39;,&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace,serif;font-size:14px;line-height:17.59375px;margin:0px;padding:0px;border:0px;vertical-align:baseline">=</span><span style="font-family:Consolas,Menlo,Monaco,&#39;Lucida Console&#39;,&#39;Liberation Mono&#39;,&#39;DejaVu Sans Mono&#39;,&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace,serif;font-size:14px;line-height:17.59375px;margin:0px;padding:0px;border:0px;vertical-align:baseline"> bind </span><span style="font-family:Consolas,Menlo,Monaco,&#39;Lucida Console&#39;,&#39;Liberation Mono&#39;,&#39;DejaVu Sans Mono&#39;,&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace,serif;font-size:14px;line-height:17.59375px;margin:0px;padding:0px;border:0px;vertical-align:baseline">(</span><span style="font-family:Consolas,Menlo,Monaco,&#39;Lucida Console&#39;,&#39;Liberation Mono&#39;,&#39;DejaVu Sans Mono&#39;,&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace,serif;font-size:14px;line-height:17.59375px;margin:0px;padding:0px;border:0px;vertical-align:baseline"> </span><span style="font-family:Consolas,Menlo,Monaco,&#39;Lucida Console&#39;,&#39;Liberation Mono&#39;,&#39;DejaVu Sans Mono&#39;,&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace,serif;font-size:14px;line-height:17.59375px;margin:0px;padding:0px;border:0px;vertical-align:baseline">\w </span><span style="font-family:Consolas,Menlo,Monaco,&#39;Lucida Console&#39;,&#39;Liberation Mono&#39;,&#39;DejaVu Sans Mono&#39;,&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace,serif;font-size:14px;line-height:17.59375px;margin:0px;padding:0px;border:0px;vertical-align:baseline">-&gt;</span><span style="font-family:Consolas,Menlo,Monaco,&#39;Lucida Console&#39;,&#39;Liberation Mono&#39;,&#39;DejaVu Sans Mono&#39;,&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace,serif;font-size:14px;line-height:17.59375px;margin:0px;padding:0px;border:0px;vertical-align:baseline"> g w y </span><span style="font-family:Consolas,Menlo,Monaco,&#39;Lucida Console&#39;,&#39;Liberation Mono&#39;,&#39;DejaVu Sans Mono&#39;,&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace,serif;font-size:14px;line-height:17.59375px;margin:0px;padding:0px;border:0px;vertical-align:baseline">)</span><span style="font-family:Consolas,Menlo,Monaco,&#39;Lucida Console&#39;,&#39;Liberation Mono&#39;,&#39;DejaVu Sans Mono&#39;,&#39;Bitstream Vera Sans Mono&#39;,&#39;Courier New&#39;,monospace,serif;font-size:14px;line-height:17.59375px;margin:0px;padding:0px;border:0px;vertical-align:baseline"> x</span></div>
<div><br></div><div>All I did was replace the inner &quot;x&quot; with &quot;w&quot;, to demonstrate that it has no relationship to the outer &quot;x&quot;; the \... -&gt; syntax introduces new local bindings unrelated to any outside of it, in this case for &quot;w&quot; (or what he had &quot;x&quot;, shadowing the original binding of &quot;x&quot; within the lambda).</div>
<div><br></div></div>-- <br><div dir="ltr"><div>brandon s allbery kf8nh                               sine nomine associates</div><div><a href="mailto:allbery.b@gmail.com" target="_blank">allbery.b@gmail.com</a>                                  <a href="mailto:ballbery@sinenomine.net" target="_blank">ballbery@sinenomine.net</a></div>
<div>unix, openafs, kerberos, infrastructure, xmonad        <a href="http://sinenomine.net" target="_blank">http://sinenomine.net</a></div></div>
</div>