College Publications logo   College Publications title  
View Basket
Homepage Contact page
Cadernos de Lógica e Computação
Cadernos de Lógica e Filosofia
Cahiers de Logique et d'Epistemologie
Communication, Mind and Language
Cuadernos de lógica, Epistemología y Lenguaje
Encyclopaedia of Logic
IfColog series in Computational Logic
Law and Society
Logic PhDs
Logic, Methodology and Philosophy of Science
The Logica Yearbook
Neural Computing and Artificial Intelligence
The SILFS series
Studies in Logic
Studies in Talmudic Logic
Texts in Mathematics
Digital Downloads
Information for authors
About us
Search for Books



Design and Analysis of Purely Functional Programs

Second Edition

Christian Rinderknecht

This new edition contains new chapters for undergratuates, where the progression is purposefully slow and every step explained. The chapter on merg e sort has been rewritten for better clarity and new results were included. A large chapter on XSLT was added.

This book addresses a priori different audiences whose common interest is functional programming.

For undergraduate students, we offer a very progressive introduction to functional programming, with long developments about algorithms on stacks and some kinds of binary trees. We also study memory allocation through aliasing (dynamic data-sharing), the role of the control stack and the heap, automatic garbage collection (GC), the optimisation of tail calls and the total allocated memory. Program transformation into tail form, higher-order functions and continuation-passing style are advanced subjects presented in the context of the programming language Erlang. We give a technique for translating short functional programs to Java.

For postgraduate students, each functional program is associated with the mathematical analysis of its minimum and maximum cost (efficiency), but also its average and amortised cost. The peculiarity of our approach is that we use elementary concepts (elementary calculus, induction, discrete mathematics) and we systematically seek explicit bounds in order to draw asymptotic equivalences. Furthermore, we cover in detail proofs of properties like correctness, termination and equivalence.

For the professionals who do not know functional languages and who must learn how to program with the language XSLT, we propose an introduction which dovetails the part dedicated to undergraduate students. The reason of this unusual didactic choice lies on the observation that XSLT is rarely taught in college, therefore programmers who have not been exposed to functional programming face the two challenges of learning a new paradigm and use XML for programming: whereas the former puts forth recursion, the latter obscures it because of the inherent verbosity of XML. By learning first an abstract functional language, and then XML, we hope for a transfer of skills towards the design and implementation in XSLT without mediation.

See inside

24 November 2012


© 2005–2017 College Publications / VFH webmaster