Ruby port of Matthew Flatt's CS5510 PL course.