Programming from first principles - Bornat (Prentice-Hall, 1987)