AN INTRODUCTION TO THE THEORY OF LISTS
Richard S. Bird
In these lectures we introduce a notation and a calculus for specifying and manipulating computable functions over lists. The calculus is used to derive efficient solutions for a number of problems, including problems in text processing. Although programming per se is not the main topic, we indicate briefly how these solutions can be implemented in a purely functional programming language.