Lab5 - principles of programming languages