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