OBJECT-ORIENTED PROGRAMMING, SYSTEMS, LANGUAGES and APPLICATIONS
 
 
Program
 


Program (2mb PDF)

Explore
  Invited Speakers
  Onward!
  Panels
  Workshops
Discover
  Research Papers
  Student Research Comp.
  Posters
  Doctoral Symposium
  Educators' Symposium
  Wiki Symposium
  Dynamic Lang. Symp.
Understand
  Tutorials
  Essays
  Practitioner Reports
  Demonstrations
Create
  DesignFest
  Lightning Talks
  FlashBoF
  Instant Arts School Exp.
 
Other Events
 
Resort Map (364kb PDF)
 
Resort Map (JPG)

 

 
Basket
 

view, help

"Patterns in Functional Programming"

 

 
Page
 

Printer-friendly

 
 
  > Tutorials > All Tutorials

 : Sunday Morning Tutorials (8:30 - 12:00) : Sunday : Patterns and Pattern Languages

Patterns in Functional Programming

Pacific Salon 6
Sunday, 8:30, half day

 


 
7·8·9·10·11·12·13·14·15·16·17·18·19·20·21

Jeremy Gibbons, University of Oxford

Tutorial number: 1

The purpose of this tutorial is to draw together ideas from the Design Patterns community (the Gang of Four: Gamma, Helm, Johnson, Vlissides) and the Functional Programming world (eg Bird, Meertens, Hughes). In particular, the thesis is that whereas design patterns must be expressed extra-linguistically (as prose, diagrams, examples) in object-oriented languages, they may be captured directly as abstractions using higher-order operators in functional programming languages. Therefore, they may be reasoned about, type-checked, applied and reused, just as any other abstractions may be.

We argue this case by developing the idea of higher-order operators, specifically for capturing patterns of computation in programs. We then build on this to show how the intentions behind a number of the Gang of Four patterns - such as Composite, Visitor, Iterator, and Builder - have higher-order operators as their analogues in functional languages. Specifically, the structure of these patterns is determined essentially by the structure of the data involved, and they can be captured as generic programs parametrized by that datatype.

The aim is to give greater insight into and understanding of already-familiar patterns.

Intermediate: Fluency in OO programming. Familiarity with design patterns. No experience in functional programming is required, but confidence with recursion is essential.

Jeremy Gibbons, University of Oxford:  Jeremy Gibbons is University Lecturer in Software Engineering and Continuing Education at the University of Oxford. He teaches on the professional part-time Masters programme (www.softeng.ox.ac.uk), and acts as Deputy Director with particular responsibility for the Object Technology sub-programme. He has eighteen years' experience in research and teaching in programming languages, especially in functional programming.

 
.