Title: Advanced functional programming
Description: This volume contains the notes of the lectures given at the Fourth Inter- tionalSchoolonAdvanced FunctionalProgramming,heldAugust19–24,2002,at St. Anne’s College in Oxford, UK. This School was preceded by earlier ones in B? astad (1995, Sweden, LNCS 925),Olympia,WA (1996,USA, LNCS 1129),andBraga(1998,Portugal,LNCS 1608). The goal of this series of schools is to make recent developments in the area of functional programming widely available. The notes are published to enable individuals, small groups of students, and lecturers to study recent work in the rapidly developing area of functional programming. ThelecturesinthisSchoolintroducetools,languagefeatures,domain-speci?c languages, problem domains, or programming methods. All lectures are - companied by software, and all lectures contain exercises and practical assi- ments. Most of the resources can be downloaded via the website of the School: http://www.functional-programming.org/afp/afp4/. TheLectures Richard Bird and Jeremy Gibbons show how to construct a program for ari- meticcoding.Theyusethetheoryoffoldsandunfoldstodevelopbothaprogram forarithmeticcodinganddecoding,andaproofofcorrectness.Theelegantresult shows that using theory can make a di?cult proof digestible. Manuel Chakravarty and Gabriele Keller tackle the performance problem of Haskell’s standard arrays. They introduce an array library with which arr- centric algorithms can be coded elegantly, which has very good performance. Koen Claessen and Colin Runciman show how to use QuickCheck to specify programpropertiesandtotestthesepropertiesonfunctionalprograms,andhow to use Hat to trace computations. The combination of the two tools which can be used to trace computations of unexpected results is a powerful debugging tool. MatthiasFelleisenexplainshowtodevelopinteractiveWebprogramsinfu- tional Scheme with continuations, using DrScheme and its built-in Web server.
Subjects: Functional programming (Computer science), Congresses, Computer science, Software engineering, Logic design