1. Introduction
  2. 1. Project Overview
    1. 1.1. Project structure
    2. 1.2. Scheme features
    3. 1.3. Implementation overview
    4. 1.4. Running the interpreter
  3. 2. Part 1: The Evaluator
    1. 2.1. Problem 1 (100pts): Frame
    2. 2.2. Problem 2 (150pts): @builtin
    3. 2.3. Problem 3 (200pts): scheme_eval
    4. 2.4. Problem 4 (200pts): define@1
    5. 2.5. Problem 5 (150pts): 'quote
  4. 3. Part 2: Procedures!
    1. 3.1. Problem 6 (150pts): begin
    2. 3.2. Problem 7 (200pts): lambda
    3. 3.3. Problem 8 (200pts): child Frame!
    4. 3.4. Problem 9 (200pts): apply lambda!
    5. 3.5. Problem 10 (100pts): bind lambda!
    6. 3.6. Problem 11 (200pts): dynamic scoping with mu
  5. 4. Part 3: Special Forms, expr with thunks
    1. 4.1. Problem 12 (150pts): and & or
    2. 4.2. Problem 13 (150pts): cond
    3. 4.3. Problem 14 (200pts): local binding with let
    4. 4.4. Complete Checkpoint (200pts): tests.scm!
  6. 5. Part 4: Write Some Scheme
    1. 5.1. Problem 15 (200pts): enumerate
    2. 5.2. Problem 16 (200pts): merge
  7. 6. Extra Credit
    1. 6.1. Problem 17 (200pts): optimize tail recursion!
  8. 7. Optional: Manipulate Scheme code
    1. 7.1. Optional 1 (10pts): let is sugar
    2. 7.2. Optional 2 (10pts): define-macro
  9. 8. Conclusion

proj04: Scheme Interpreter

Extra Credit