In the Age of Web: Typed Functional-First Programming Revisited
Tomas Petricek (University of Cambridge), Don Syme (Microsoft, Research), Zach Bray (Type Inferred Ltd)

TL;DR
This paper examines how typed functional programming languages, specifically F#, adapt to the web's dynamic environment by addressing challenges like asynchronous communication, untyped data, and external integrations.
Contribution
It demonstrates how F# leverages type providers, meta-programming, and computation expressions to meet web-related challenges, highlighting the importance of a holistic approach.
Findings
F# effectively integrates external data sources using type providers.
Lightweight meta-programming enables targeting JavaScript.
Computation expressions simplify asynchronous programming.
Abstract
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 world, 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 the 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…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsLogic, programming, and type systems · Parallel Computing and Optimization Techniques · Software Engineering Research
