Summer School and Workshop on
Advanced Functional Programming

St Anne's College, Oxford
19th to 24th August 2002

Programme

Monday, August 19th

14:00 - 18:00
Graham Hutton, Introduction to Functional Programming

Tuesday, August 20th

9:00 - 10:30
Koen Claessen (Chalmers University of Technology) and Colin Runciman (University of York), Testing and Tracing Lazy Functional Programs (1,2)

10:30 - 11:00
Coffee

11:00 - 12:30
Cedric Fournet (Microsoft Research) and Fabrice Le Fessant (INRIA Rocquencourt), Jocaml, a Language for Concurrent, Distributed and Mobile Programming (1,2)

12:30 - 14:00
Lunch

14:00 - 15:30
Richard Bird and Jeremy Gibbons (University of Oxford): Arithmetic Coding with Folds and Unfolds (1,2)

15:30 - 16:00
Tea

16:00 - 18:00
Lab sessions
Koen Claessen and Colin Runciman (3)
Cedric Fournet and Fabrice Le Fessant (3)

Wednesday, August 21

9:00 - 9:45
Richard Bird and Jeremy Gibbons (3)


9:45 - 10:30
Matthias Felleisen (Northeastern University, Boston): Developing Interactive Web Programs in DrScheme (1)

10:30 - 11:00
Coffee

11:00 - 11:45
Cedric Fournet and Fabrice Le Fessant (4)


11:45 - 12:30
Koen Claessen and Colin Runciman (4)


12:30 - 14:00
Lunch

14:00 - 14:45
Matthias Felleisen (2)


14:45 - 15:30
Lab session
Matthias Felleisen (3)


15:30 - 16:00
Tea

16:00 - 18:00
Lab sessions
Koen Claessen and Colin Runciman (5)
Cedric Fournet and Fabrice Le Fessant (5)

Thursday, August 22

9:00 - 9:45
Matthias Felleisen (4)


9:45 - 10:30
Manuel Chakravarty (University of New South Wales), Fast Arrays in Haskell (1)

10:30 - 11:00
Coffee

11:00 - 11:45
Philip Wadler (Avaya Labs), XQuery: A Typed Functional Language for Querying XML (1)

11:45 - 12:30
Manuel Chakravarty (2)


12:30 - 14:00
Lunch

14:00 - 14:45
Paul Hudak (Yale University): Robots, Arrows and Functional Reactive Programming (1)

14:45 - 15:30
Philip Wadler (2)


15:30 - 16:00
Tea

16:00 - 18:00
Lab sessions
Philip Wadler (3)
Matthias Felleisen (5)

Friday, August 23

9:00 - 9:45
Philip Wadler (4)


9:45 - 10:30
Paul Hudak (2)


10:30 - 11:00
Coffee

11:00 - 11:45
Paul Hudak (3)


11:45 - 12:30
Manuel Chakravarty (3)


12:30 - 14:00
Lunch

14:00 - 15:30
Richard Bird and Jeremy Gibbons (4,5)


15:30 - 16:00
Tea

16:00 - 18:00
Lab sessions
Paul Hudak (4)
Manuel Chakravarty (4)

Saturday, August 24

Participants presentations

9:00 - 9:30
Kirill Lisovsky, Scheme-based XML application server

PLT web server is a web server implemented and programmable in Scheme which tightly integrates and supports the construction of dynamic content generators. SXML is an instance of XML Information set represented in the form of S-expressions. This presentation considers an XML application server based on PLT Scheme web server and SXML.

9:30 - 10:00
Duncan Coutts, Arrows for Errors: extending the error monad

This talk considers an application of arrows. We extend the normal error monad with an extra arrow-style combinator to enable multiple errors from independant computations to be collected. We look at the data-independance property of the extra combinator which allows the extended capabilities. We also demonstrate an applicative notation and give examples of structuring computations to take advantage of the additional combinator.

10:00 - 10:30
Kirsten Chevalier, Implementing type-inference-based deforestation

In lazy functional programs, programs often are designed as compositions of many small functions, which use intermediate data structures such as lists and trees to communicate with each other. This style of programming makes programs easier to understand and maintain, but less efficient due to their use of intermediate data structures. The goal of deforestation is to automatically transform modular programs that use many intermediate data structures into more efficient, monolithic programs, allowing programmers to concern themselves with writing elegant and readable programs while the compiler takes care of the details of making programs efficient. Deforestation has long been recognized as a useful technique for optimizing lazy functional programs, but effective implementations of it have been lacking. The most influential algorithm for deforestation -- shortcut deforestation -- works by exploiting certain programming patterns, but the unnaturalness of these patterns restricts its usefulness to library functions. Type inference-based deforestation, proposed by Olaf Chitil in 2000, builds on shortcut deforestation and lessens the restrictions imposed by it, making it applicable to arbitrary programs. I will discuss my implementation of type-inference based deforestation.

10:30 - 11:00
Coffee

11:00 - 11:30
Klaus Lüttich, Functional implementation of maximal sharing of ATerms

11:30 - 12:00
Claus Juergensen, Using monads to fuse recursive programs
Abstract (pdf)

12:00 - 14:00
Lunch

14:00 - 15:00
Not yet decided.