In the Age of Web Typed Functional-First Programming Revisited

Tomas Petricek, Don Syme, Zach Bray

In Post-proceedings of ML Workshop 2014

Most programming languages were designed before the age of web. This matters because the web changes many assumptions that typed functional language designers take for granted. For example, programs do not run in a closed word, but must instead interact with (changing and likely unreliable) services and data sources, communication is often asynchronous or event-driven, and programs need to interoperate with untyped environments.

In this paper, we present how F# language and libraries face the challenges posed by the web. Technically, this comprises using type providers for integration with external information sources and for integration with untyped programming environments, using lightweight meta-programming for targeting JavaScript and computation expressions for writing asynchronous code.

In this inquiry, the holistic perspective is more important than each of the features in isolation. We use a practical case study as a starting point and look how F# language and libraries approach the challenges posed by the web. The specific lessons learned are perhaps less interesting than our attempt to uncover hidden assumptions that no longer hold in the age of web.

Paper and more information

Watch the talk

Thanks to the ML workshop organizers, the video from my original talk, Doing web-based data anlytics with F# is on YouTube!


If you want to cite the paper, you can use the following BibTeX information.

  author    = {Petricek, Tomas and Syme, Don and Bray, Zach},
  title     = {In the Age of Web: Typed Functional-First Programming Revisited},
  booktitle = {Post-proceedings of ML Workshop},
  series    = {ML 2014},
  location  = {Gotenburg, Sweden},
  year      = {2014}

If you have any comments, suggestions or related ideas, I'll be happy to hear from you! Send me an email at or get in touch via Twitter at @tomaspetricek.

Published: Saturday, 4 April 2015, 12:00 AM
Author: Tomas Petricek
Typos: Send me a pull request!