Programming Languages and Systems by D. Le Metayer