Functional pearls

Historical note

This editorial was written in 2009 by Jeremy Gibbons, when he had just taken over as editor of the Functional Pearls column in JFP. Since then, the editorship of the column has passed on to Ralf Hinze, before passing on to me. With Jeremy’s permission, I have extended his excellent advice with some insights of my own; any mistakes are mine.

What is a Functional Pearl?

Richard Bird gave an invited talk at ICFP 2006 in Portland on How to Write a Functional Pearl. Both Jeremy and I heartily recommend that authors and reviewers read through these slides. Richard recalls reading Jon Bentley’s ‘Programming Pearls’ column in the Communications of the ACM, that lead to a book with the following guidelines:

Just as natural pearls grow from grains of sand that have irritated oysters, these programming pearls have grown from real problems that have irritated programmers. The programs are fun, and they teach important programming techniques and fundamental design principles.

Those guidelines apply to functional pearls too – although functional pearls typically employ a functional programming language, in the broadest sense of the word.

Typical functional pearls may consist of:

This list is in no way exhaustive.

Richard characterized functional pearls as “polished, elegant, instructive, entertaining”. They are not just shorter versions of standard research papers; they are not judged by the same criteria. Pearls have more freedom in their presentation than regular papers: pearls need not contain extensive discussions regarding future work or related work; pearls sometimes experiment with forms of writing that you would not encounter in regular research papers. Good pearls tell a story in 6 to 10 pages; they are brisk, engaging, accessible, surprising, and sometimes, in their own way, funny.

Pearls are subject to peer review – but they are judged differently from regular research papers. I will continue to give the same advice as my predecessors to the reviewers of functional pearls, instructing them to stop reading when:

Many people have found that writing in this format is fun. I look forward to receiving your burnished, lustrous submissions!