Homework 05
To be handed on October 28th, 10AM
Problem 1
If the following programs type-check according to the rules given in the course, give the corresponding type derivation tree, otherwise give a partial tree that shows where it doesn't work (like in Solution to Exercises 05).
Please write clearly.
You may need to add some simple and obvious typing rules not given in the course. In this case give the new rules.
a)
int x; int y; if (1 > 42) {return x} else {return y} x := y;
Solution
b)
int x; int y; if (0 > 0) { if (3 > 4) {x = y;} else {y = x;} } else if (4 > 3) {x = x;} else {y = y;} }
Solution
c)
Class C { int f(int x) { return 1+f(x); } }
Problem 2
Suppose we allow nested function definitions:
varDecl ::= type ID | method
Give a new set of type rules to type-check a program with nested function definitions.