In this talk we showcase the application of functional programming in a very large industrial setting. At Standard Chartered Bank, Haskell forms the core of a software library supporting the entire Financial Markets (FM), a business line with 5.7 billion USD operating income in 2022. Typed functional programming is used across the entire tech stack, including foundational APIs and CLIs for deal valuation and risk analysis, server-side components for long-running batches or sub-second RESTful services, and end-user GUIs. Thousands of users interact with software built using functional programming, and over one hundred write their own functional code.
We present the history of how functional programming established itself in FM, including the rationale for having our own compiler and dialect of Haskell. We then focus on how we leverage it to orchestrate type-driven large-scale pricing workflows. The same API can be used to price one trade locally, or millions of trades across thousands of nodes in the cloud. We build upon decades of research and experience in the functional programming community, relying on concepts such as monads, lenses, datatype generics, and closure serialisation.
José Pedro Magalhães is a Managing Director leading a team of ~45 quantitative developers at Standard Chartered Bank. He is also one of the founders of Chordify.
Before joining Standard Chartered, he was a postdoctoral research assistant in the Programming Languages group at the Department of Computer Science of the University of Oxford, working on the Unifying Theories of Generic Programming project.
Previously he was a PhD student at the Department of Information and Computing Sciences of Utrecht University in the Netherlands. His PhD topic was Real-Life Datatype Generic Programming, supervised by Johan Jeuring, Andres Löh, and Doaitse Swierstra. Before that he graduated from Minho University in Computer Science and Systems Engineering (Licenciatura em Engenharia de Sistemas e Informática).
He has also been a Summer Student at CERN, an intern at Philips Research, and a research intern at Microsoft Research Cambridge.
The iTask library developed at the University of Nijmegen offers Task Oriented Programming (TOP) as an Embedded Domain Specific Language (EDSL) hosted in the pure functional language Clean. It is designed to support the development of distributed, multi-user, multi-platform, web applications. It allows programmers to focus on the different tasks and the dependencies between these tasks the application has to support. One does not need to worry too much about the technical details needed for the realization. From one source, the code, to be executed on the server, as well as the code to be executed on the browser, is generated. All data communication and synchronization between the parties involved is handled automatically by the iTask Operating System.
iTasks has successfully been used for developing industrial prototypes in different area’s. This has led in 2018 to a spin-off start-up company, TOP Software Technology (www.top-software.nl), which uses iTasks for the development of industrial applications. We focus on Command and Control Systems such as VIIA (Vessel Information Integrating Application). VIIA is a large and data demanding web-based multi-user application monitoring the world-wide movements of ship vessels over time. It is used by the Dutch Coast Guard to detect unwanted behaviours as soon as possible such that one has time to undertake proper actions.
In this talk we will give a short overview of VIIA to explain what the challenges are, and pinpoint to special features of Clean and iTasks used in the implementation.
Rinus Plasmeijer's main research interests are functional programming (in particular Clean), generic programming, graph re-writing systems, type systems, static analysis, compiler construction, code generation, men – machine interaction, parallel programming, distributed application development, operating systems, web-based systems, test systems, workflow systems, and internet programming.
Currently Rinus applies advanced functional programming techniques to enable model driven software development. In particular Rinus uses these techniques for realizing Embedded Domain Specific Languages, using Clean as host language. A nice example of an EDSL is the iTask system, which is described in this keynote talk.