Functional programming techniques. - Stephen A. Hill (1989)