README for Homework 6 (tfun + letrec, products, sums, recursive types)

Implementation of TFun, including letrec, cartesion products, disjoint sums, and
recursive types.

This package contains the following files:

tfun.cm         -- CM descriptor file for building the evaluator and typechecker.

env.sml         -- generic environment model (environments map strings to values)
tfunsyntax.sml  -- abstract syntax for types and expressions
tfuneval.sml    -- environment-based CBV evaluator (defines eval)
tfuntype.sml    -- type checker (defines typeOf)

tests.sml       -- a set of test expressions for testing both eval and typeOf


To build the system, run sml in the directory created by unpacking this tarball,
then compile the code by running:

- CM.make "tfun.cm";

Now you can open the modules as follows for testing:

- open TFunEval TFunType Tests;

Then run test cases as follows:

- eval t9;

- typeOf t9;

Report bugs to dbm@cs.uchicago.edu.
New test cases also welcome.
