Algebra of programming - Richard Bird and Oege de Moor (Prentice-Hall of India, New Delhi, 1998)