Problem Set 4 Frequently Asked Questions
Q: When is problem set 4 due?
A: Friday, October 31, 6:59 pm
Q: What types and operators should my code handle?
A: You can follow the pattern of optimize0. Do not worry about the following types
and operators:
Char_t
Undef_t
Ref_t
String_t
Cons
Append
Concat
Assign
Q: What expressions should my code handle?
A: As above, you can follow optimize0.
Q: What style should my code be written in?
A: We recommend that your code resemble optimize0 as closely as
possible.
Q: Do I have to support Real_t for algebraic
simplification?
A: No.
Q: Does optimize1
need to handle AndAlso or OrElse?
A: These operators short circuit, so they are not commutative, so optimize1 should not change them.
Q: Should alpha-renaming eliminate shadowing?
A: Yes.
Q: In optimize5, what variables should I propagate?
A: Only those bound to a constant.
Q: Can my optimization code depend on other optimizations?
A: We prefer that you do not introduce dependencies between optimizations (because
this makes grading easier and avoids cascading of errors). But if you choose to
do so and are confident that your optimizations work correctly then you can do
so (we won't penalize you for this). However, in such a case if your optimizations
contain errors and they propagate, you are likely to lose credit for all
dependent optimizations as well.