Ouch, I forgot to explain V. NO, you canNOT replace x with arbitrary 
expressions. You may use ONLY VALUES (V for Value). In this context a value is 
one of: #t/#f, number, or a lambda expression. -- Matthias





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

> The general form: ( (lambda (x) e) V) ~ e with all [free] x replaced by V
> 
> In concrete terms means:  ( (lambda (x) (* x y) 2) ~ (* 2 y) ?
> 
> I figure best to be sure now.
> 
> Thanks and best regards
> 
> matt johnson
> 
> 
> On 11/02/2014, at 3:35 PM, Matthias Felleisen <matth...@ccs.neu.edu> wrote:
> 
>> 
>> 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