1. Construct the evaluation tree for a uScheme (lambda) expression. Similar to the midterm.
2. Define a function in terms of sums, products and lambda abstraction.
3. Type-check, i.e., construct the type-checking tree, for the application of the function to a term.
4. Type check, i.e., construct the type-checking tree, for a polymorphic expression.
5. Define a datatype and a function in ML.
6. Reduce (beta-reduction) a lambda-expression.
7. Be able to explain how a prolog program works.
Good luck!