I answered this in the lecture, but since the recordings are not searchable, just to clarify:
* Church encodings will not be part of the exam. You should be able to read & write lambda expressions (for example, as part of a Haskell program), though.
* Phantom types, rank-n types, existential types may be part of the exam to the degree we covered them in the lecture and exercises. That is, you should know what they are, why they are used, and understand code which uses them.
will put a summary up shortly. Should also be back in my office about 3pm, if someone wants to drop by.