Algebra of programming - Bird, Richard (Prentice Hall International series in computer science, 1997)