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