You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
22 lines
992 B
22 lines
992 B
|
|
Exercise 4.2: Louis Reasoner plans to reorder the
|
|
cond clauses in eval so that the clause for procedure
|
|
applications appears before the clause for assignments. He argues that this
|
|
will make the interpreter more efficient: Since programs usually contain more
|
|
applications than assignments, definitions, and so on, his modified eval
|
|
will usually check fewer clauses than the original eval before
|
|
identifying the type of an expression.
|
|
|
|
|
|
What is wrong with Louis’s plan? (Hint: What will Louis’s evaluator do with
|
|
the expression (define x 3)?)
|
|
|
|
Louis is upset that his plan didn’t work. He is willing to go to any lengths
|
|
to make his evaluator recognize procedure applications before it checks for
|
|
most other kinds of expressions. Help him by changing the syntax of the
|
|
evaluated language so that procedure applications start with call. For
|
|
example, instead of (factorial 3) we will now have to write (call
|
|
factorial 3) and instead of (+ 1 2) we will have to write (call +
|
|
1 2).
|
|
|
|
|
|
|