Presenters: Arnaud Bailly & Christophe Thibaut

Objectives:

  • What's this functional programming thing about ?
  • Why does it matter for agile software development ?
  • Let's have fun !

Intended audience:

developers, technical leaders, project leaders and coaches, anybody interested in software languages and what they can bring to XP teams.

Contents

While the paradigm is as old as the concept of a computable function, Functional programming recently got some attention from various part of the software industry. Languages and tools are emerging such as Scala on the JVM, F# and LINQ on CLR, Erlang, Haskell...

We believe that although pure functional languages like Haskell may never reach the mass, the concepts such a language conveys are extremely useful to produce better, cheaper, faster and more maintainable software. Moreover, we think that although XP has close ties with object-orientation and is language agnostic, languages do really matter.

This session aims to be a thought-provoking workshop where participants may discover (or rediscover) some basic principles of computing with functions, and how they fit nicely with the agile principles and practices of XP: simplicity through conciseness, feedback and communication through expresiveness, courage through the paradigm shift.

The session is organized in three different parts:

  1. a short presentation of some real-world (TM) problem: the infamous "web forms with business rules" problem, and how it may be solved in various ways. First 2 solutions are in Javascript, third solution is in Haskell. The presentation is made with live code and working examples and helps get some motivations about the "functional way" and why it can helps.
  2. an innovative boardgame to learn pure functional programming by writing a small program to move a robot, using only hexagonal tiles and some simple rules. The game mimics the basic principles of the Haskell language (ie. untyped lambda-calculus with pattern-matching)
  3. (optional) a coding dojo where participants have the opportunity to get their hands on some Haskell code to develop a small DSL for controling forms content

Some pointers:

  1. the work-in-progress of the session for XP Day Paris 2008 (unfortunately in french): http://www.oqube.com/xpday/index.html
  2. the reference on haskell: http://www.haskell.org

Relevance to XP:

We plan to address the following questions through this session, although we do not plan to give them definitve answers !

  • writing less code means producing more features: how functional features can help with this ?
  • writing correct code is difficult: how a high-level statically typed language can help ?
  • writing the right code is even more difficult: could we benefit from a more expressive language, without too many boilerplate code, that we could show to an "educated" customer representative for validating business rules ?
  • XP does not need sloppiness, XP needs rigor: creativity stems from self-imposed constraints. Can a rigorous language like Haskell help in this ?

Format and length: short talk, game, workshop - 120'