Assignment Three

If you are handing it in late please see the instructions at the end of this page.

Design and implement a procedure reduce* that takes an unparsed Purple language expression, exp, and a positive integer n, and returns the answer for exp if it can be obtained by n or fewer applicative-order reductions, and #f otherwise. I expect that reduce* would look like:

(define reduce*
  (lambda (exp n)
    (reducehelp (parse exp) n)))
    
to take advantage of our parser from assignment two.

This is an extended version of exercise 4.3.2 on page 113 in the book.

Turning it in

In addition to submitting your code in the usual way you will need to submit a written typeset report describing your design and its justification. This report will be graded on content, grammar, spelling, ease of understanding, and readability.

Extra credit

Add (if test then else) expressions to Purple and design and implement reduce* for this language. (This was the original assignment).

Late handin

I will create a new submission program (~cs326/bin/sub3late) to use for handing it in. If you would like to turn in a new report (because, for example, there were design changes) please also turn it in (SEM233) to me before noon on the 8th. Make sure that you have all supporting procedures (parse, free?, ...) in the file that you turn in.
Sushil Louis
Last modified: Wed Nov 3 15:37:15 PST 1999