Teaching G7400 F'11 Assignments 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". Problem: 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 2011 generated with Racket