Gibbons. Calculating Functional Programs. Springer Berlin Heidelberg, 2002, doi:10.1007/3-540-47797-7_5.