On Feb 11, 2014, at 12:48 AM, Matthew Johnson <mcoog...@gmail.com> wrote:

> I am still a little unclear.  Is this a logical result, or a result of the 
> evaluator's rules?  Or are they the same thing? 


They are the same thing. To calculate with the Racket that you see in the 
book/derivation, use this rule: 

  ( (lambda (x) e) V ) ~ e with all [free] occurrences of x replaced by V

[This is the rule you learn in pre-algebra,  with the 'free' needed here 
because 
variables can occur at more places than in pre-algebra.] Using this rule, plus 
simple car/cdr/cons/+1 rules, you can confirm every step in the derivation. As 
it 
turns out, the compiler implements this rule totally faithfully BUT instead of 
copying actual code it "copies" references to code by moving things from 
registers
to registers. Because the two are equivalent, a programmer can use the above
rule to think about code and the compiler writer (one among 10,000s of language
users) is the only one who has to keep references, registers, and replication 
in mind (kind of). 

-- Matthias


____________________
  Racket Users list:
  http://lists.racket-lang.org/users

Reply via email to