<div dir="rtl"><div dir="ltr" style="font-family:arial,sans-serif;font-size:13px">Thank U very much,</div><div dir="ltr" style="font-family:arial,sans-serif;font-size:13px">Our project is about "programming language principle". during the semester we have been programming a compiler for Jack language in racket,</div>
<div dir="ltr" style="font-family:arial,sans-serif;font-size:13px">and now we need to make a presentation on Racket language that includes all information about the principle that we learned.</div></div><div class="gmail_extra">
<br><br><div class="gmail_quote"><div dir="ltr">2014-07-21 5:31 GMT+03:00 Matthias Felleisen <span dir="ltr"><<a href="mailto:matthias@ccs.neu.edu" target="_blank">matthias@ccs.neu.edu</a>></span>:</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="HOEnZb"><div class="h5"><br>
On Jul 20, 2014, at 9:25 PM, Jon Zeppieri wrote:<br>
<br>
> On Sun, Jul 20, 2014 at 6:27 PM, Matthias Felleisen<br>
> <<a href="mailto:matthias@ccs.neu.edu">matthias@ccs.neu.edu</a>> wrote:<br>
>><br>
>> The phrase "call-by-value is a reduction strategy" has no meaning per se but is a left over from the time when people hadn't figured out the above (pre 1070).<br>
>><br>
><br>
> I apologize for spreading this nonsense. Is it the phrase "reduction<br>
> strategy" that's the problem? In the paper you cited, you refer to<br>
> "evaluation strategies" and "binding strategies" and list<br>
> call-by-value (eager) and call-by-name (delayed) as examples of the<br>
> former. Is the problem with "reduction strategy" that it properly<br>
> refers to rules for reducing redexes in a lambda calculus (and not<br>
> parameter-passing in a programming language)? Or is it just nonsense<br>
> tout court?<br>
<br>
<br>
</div></div>Yeap. Strategies exist in any LC. A strategy is simply a function<br>
that picks the next redex to reduce. Strategies have uses BUT not<br>
to describe parameter-passing mechanism. The latter are turned into<br>
axioms directly. For example<br>
<br>
BY NAME: (function (x) body) any-argument = body with all (free) x replaced by any-argument<br>
BY VALUE: (function (x) body) value-argument = body with all (free) x replaced by value-argument<br>
<br>
So you see there are two calculi and they each come with a different<br>
axiom but the SAME strategies.<br>
<br>
;; ---<br>
<br>
The idea is so much ingrained in programmer's mind due to some<br>
basic text books that I can't blame anybody and I am certainly<br>
not blaming you.<br>
<br>
I just don't like it that the idea is repeated 40+ years<br>
after it was debunked in my neighborhood :-)<br>
<span class="HOEnZb"><font color="#888888"><br>
-- Matthias<br>
<br>
<br>
</font></span></blockquote></div><br></div>