<color><param>FFFF,0000,0000</param><bigger>AFP3 Proceedings


</bigger></color>You may not have noticed, but Springer has published
the proceedings of the AFP3:


<color><param>FFFF,0000,0000</param>@book{AFP3,

   author    = {Doaitse Swierstra and Pedro Henriques and Jos\'{e}
Oliveira},

   title     = {Advanced Functional Programming, Third International
School, AFP'98},

   publisher = {Springer},

   year      = {1999},

   isbn      = {9 783540 662419},

   series    = {LNCS},

   number    = {1608}

}


</color>I quote from the preface:


In this volume you will find the lecture notes corresponding to the 

presentations given at the 3rd summer school on 

Advanced Functional Programming, held in Braga, Portugal from 

September 12--19, 1998.


This school was preceded by earlier instances in Bastad (1995, Sweden,
LNCS 

925) and Portland (1996, USA, LNCS 1110).  The goal of this series of
schools is 

to bring recent developments in the area of functional programming to 

a large group of students.  The notes are published in order to enable


individuals, small study groups, and lecturers to become acquainted 

with recent work in the fast developing area of functional
programming.


What makes this instance of the school particularly interesting is 

that all lectures introduced useful software, that was used by the 

students in the classes to get hands-on experience with the subjects 

taught.  We urge readers of this volume to download the latest version
of this 

software from the Internet and try to do the exercises from the 

text themselves; the proof of the program is in the typing.


The first lecture, on  <color><param>FFFF,0000,0000</param>Sorting
Morphisms</color>, serves as a gentle 

introduction to the things to come.  If you have always been afraid of


the word ``morphism'', and you have been wondering what catamorphisms,


anamorphisms, hylomorphims and paramorphims were about, this is the 

paper to read first; you will discover that they are merely names for 

recursion patterns that occur over and over again when writing
functional 

programs.  The algorithms in the paper are all about sorting, and
since


you are likely to know those algorithms by heart already, seeing 

them structured and analyzed in a novel way should serve as a
motivation to 

read on with the second lecture.


The second lecture, on <color><param>FFFF,0000,0000</param>Generic
Programming</color>, is almost a book in a 

book.  The notes can be seen as the culminating point of the 

STOP-project, that was sponsored by the Dutch government at the end of


the 80's and the beginning of the 90's; its overall goal was the 

development of a calculational way of deriving programs.  The project 

has provided deeper insight into real functional programming

and into the theory behind many things commonly written by functional

programmers.  One of the main achievements of the project has been

to make people aware of the fact that many algorithms can be described


in a data-independent way.  The PolyP system introduced in these notes


is one of the translations to the Haskell-world of this theoretical 

underpinning.


The third lecture, on <color><param>FFFF,0000,0000</param>Generic
Program Transformation</color>, can also 

be seen as an application of the theory introduced in lecture two.  

Many efficiency-improving program transformations can be 

performed in a mechanical way, and these would not have been possible
without

insight into the correctness of such transformations gained in the 

lecture on Generic Programming.


The fourth lecture, on <color><param>FFFF,0000,0000</param>Designing
and Implementing Combinator 

Languages</color>, introduces an easy to write formalism for writing
down the 

catamorphisms introduced in earlier chapters.  It is shown how quite 

complicated catamorphisms, that at first sight seem rather forbidding 

by making extensive use of higher order domains, can actually be 

developed in a step-wise fashion, using an attribute grammar view; it 

is furthermore shown how to relate this way of programming with 

concepts from the object-oriented world thus making clear what the 

strengths and weaknesses of each world are.


The fifth lecture, titled <color><param>FFFF,0000,0000</param>Using
MetaML: a Staged Programming 

Language</color>, introduces the concept of partial evaluation; it
serves as 

another instance of the quest for ``the most generic of writing 

programs without having to pay too much''.  The staging techniques 

show how costs that were introduced by adding extra levels of 

abstraction, may be moved from run-time to compile-time.


It has been common knowledge to users of modern functional languages 

that the type system can be a great help in shortening programs and 

reducing errors.  In the extreme one might see a type as a predicate 

capturing the properties of any expression with that type.  In the 

sixth lecture on <color><param>FFFF,0000,0000</param>Cayenne -- Spice
up your Programming with 

Dependent Types</color> it is shown in what direction functional
languages are 

most likely to develop, and what may be expected of the new type
systems to 

be introduced.


The last lecture, titled <color><param>FFFF,0000,0000</param>Haskell as
an Automation Controller</color>, shows 

that writing functional programs does not have to imply that one is 

bound to remain isolated from the rest of the world.  Being able to 

communicate with software written by others in a uniform way, is 

probably one of the most interesting new developments in current 

computer science.  It appears that the concept of a monad together 

with the Haskell typing rules, are quite adequate to describe the 

interface between Haskell programs and the outer world.




Doaitse Swierstra, Utrecht

Pedro Henriques, Minho

Jos\'{e} Oliveira, Minho 


Doaitse Swierstra mailto:[EMAIL PROTECTED],[EMAIL PROTECTED]

<smaller>__________________________________________________________________________

S. Doaitse Swierstra, Department of Computer Science, Utrecht
University

(Prof. Dr)            P.O.Box 80.089, 3508 TB UTRECHT,   the
Netherlands

                      Mail:  mailto:[EMAIL PROTECTED]           

                      WWW:   http://www.cs.uu.nl/

                      PGP Public Key:
http://www.cs.uu.nl/people/doaitse/

                      tel:   +31 (30) 253 3962, fax: +31 (30) 2513791

__________________________________________________________________________




</smaller>



Reply via email to