This assignment is to be done either individually or in pairs. Do not show your code to any other group and do not look at any other group's code. Do not put your code in a public directory or otherwise make it public. However, you may get help from the TA or the instructor. You are encouraged to use the RPILMS Discussions page to post questions so that other students can also answer and see the answers.
A Lambda-Calculus Interpreter in Oz
The goal of this assignment is to create a call-by-value lambda-calculus interpreter in Oz.
You are to use the following grammar for the lambda-calculus:
<expression> ::= | <atom> |
::= | lambda(<atom> <expression>) |
::= | [<expression> <expression>] |
Once your interpreter is finished, you should be able to execute statements such as:
{Browse {Run [lambda(x x) y]}} % should display y
Run
is expected to take lambda-calculus expressions using
the grammar above, and perform repeatedly beta reduction until no
longer possible (a value expression that can no longer be
beta-reduced) and then eta reduction until no longer possible.
10% Extra Credit:
Create a call-by-name lambda-calculus interpreter.
See the professor if you have ideas for other extensions to this assignment and would like extra credit for implementing them.
Due Date:
Received Time | Grade Modification |
before Sunday, October 11, 11:59PM | +10% |
Tuesday, October 13, from 12:00AM to 11:59PM | no modification (on time) |
Wednesday, October 14, from 12:00AM to 11:59PM | -10% |
from Thursday, October 15, 12:00AM to Friday, October 16, 11:59PM |
-25% |
after Friday, October 16, 12:00AM | not accepted |
The assignment will be graded mostly on correctness, but code clarity / readability will also be a factor (comment, comment, comment!). Be sure your solutions are robust.
Submission Requirements: Your code should consist of an Oz file, plus a README file. Combine these files into a single ZIP file with your RPILMS user name(s) as the filename, either userid1.zip or userid1_userid2.zip. Only submit one assignment per pair (the other does not need to submit anything via RPILMS). Please submit your file via RPILMS.