Home Assignments Lecture Blog Resources Project

91.301 Organization of Programming Languages
Prof. F. Martin

Problem Set 9: The Metacircular Evaluator


In this problem set, you’ll make modifications to the metacircular evaluator, changing UML Scheme. To run the metacircular evaluator, download mceval-with-let.ss from the course web site. Use the R5RS language.

After executing the code, evaluate (mc-eval-loop). This will run the interactions for your metacircular UML Scheme world. Remember that everything you type in (except for variables and numbers) should be prefixed by “uml:” – if you forget, the system will have an error. If you type in an error, the driver-loop exits and you will lose the state you had in the metacircular world.

You only need to turn in the portions of the code that you change.

Warm-up: Run the metacircular evaluator and evaluate some UML Scheme expressions. Nothing to turn in for this part.

Problem 1: Exercise 4.4 (“or” only) on p. 374. Remember to tag your new “or” with “uml:”.

Problem 2: Exercise 4.1 on p. 368.

Problem 3: Exercise 4.5 on p. 375.

Problem 4: Exercise 4.9 on p. 376. Pick one of the iteration constructs (do, for, while or until) to implement.