G7400 F'11
Set 1
Set 2
Set 3
Set 4
Set 5
Set 6
Set 7
Set 8
Set 9

Problem Set 8: The CEK Machines and Exceptions

Due date: 11/11 (a holiday) @ at the beginning of class

The goal of this problem set is to understand the CEK register machine.

Your solution should import "8provided.rkt".


The purpose of this problem is to develop a CEK machine for the ISWIM*s language from problem set 6.

Task 1 Encode your CEK machine in Redex.

Task 2 Define the cek function, which uses the CEK machine to map ISWIM*s programs to answers.

Task 3 Formulate a conjecture about the relationship between eval*-s (solution for problem set 6, imported from 8provided.rkt) and cek as a metafunction. Test the conjecture manually and with redex-check.

You must think of the imported solution as the "weather" and your own model as a "weatherman". As you explore your solution, keep in mind that you can't change the weather.

If testing finds a counter-example to your conjecture, formulate the counter-example as a failing test case and explain the failure with a one-line comment. Then fix those parts of your solution that broke so that the test case passes.

Task 4 Add the following exception handling mechanism to the CEK machine for ISWIM*s:

  e = ... | (handle e x e) | (raise x e) 
  x in Variables 
We say that a (raise x e_x) expressions raises an exception with tag x and exception code e_x. A (handle e_body x e_handler) expression sets up an exception handler for exceptions with tag x and then evaluates e_body. If the evaluation produces a value, the value is the result of the handle expression. If the evaluation of e_body raises an exception with tag x and exception code e_x, then the handler expression evaluates (e_handler e_x).

last updated on Tue Nov 15 15:51:00 EST 2011generated with Racket