Putting Functional Programming to Work - Software Design and Verification using Domain Specific Languages

(a multi-project grant during 2010-2013 funded by the Swedish Research Council VR)

Applicants: John Hughes (main applicant), Mary Sheeran, Koen Claessen, Patrik Jansson


Research programme (from the grant application)


  • 2012-04-12: Handed in an application for a 4-year continuation grant on Parallel Functional Programming
  • 2010-09-01: Alejandro Russo started as an Assistant Professor in the FP group (funded by the FunC project)
  • 2010-08-16: Jonas Duregård joined this project as a PhD student working with Patrik.
  • 2010-01-01: Ann Lillieström joined this project as a PhD student working with Koen.


We apply functional programming techniques, especially domain-specific languages (DSLs) embedded in Haskell and Erlang, to the design and verification of complex software, taking motivating examples from the telecom domain. We contribute to radio base station signal processing with a DSL for DSP algorithms, already under development with initial funding from Ericsson Software Research and the Strategic Research Foundation. Other DSLs are being developed for wire-aware circuit design, and programming highly parallel graphics cards. Drawing on this experience, we will construct a "DSL toolkit", making future DSLs much easier to design and implement.

We also contribute to testing higher level control software, via our property-based testing tool QuickCheck--already used in industry. We plan to extend it with domain-specific specification languages, connections to software models, specification mining from test results, and automated selection of test data distributions based on code-centric feedback from testing and user priorities. We plan an empirical evaluation of "property-first software development", analogous to, but more radical than, the popular "test driven development".

The overall goal is to raise the level of abstraction in software development and verification, by leveraging the power of functional programming--at least in limited domains. The proposal is heavily based on extensive existing industrial collaborations, in particular with Ericsson.