{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,2,4]],"date-time":"2026-02-04T21:09:16Z","timestamp":1770239356714,"version":"3.49.0"},"reference-count":9,"publisher":"Association for Computing Machinery (ACM)","issue":"ICFP","license":[{"start":{"date-parts":[[2024,8,15]],"date-time":"2024-08-15T00:00:00Z","timestamp":1723680000000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2024,8,15]]},"abstract":"<jats:p>We present a case-study of using functional programming in the real world at a very large scale. At Standard Chartered Bank, Haskell is used in a core software library supporting the entire Markets division \u2013 a business line with 3 billion USD operating income in 2023. 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 across Markets interact with software built using functional programming, and over one hundred write functional code.<\/jats:p>\n                  <jats:p>In this experience report we focus on how we leverage functional programming 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 cloud nodes. Different parts of the computation can be run and inspected individually, and recomputing one part triggers recalculation of the dependent parts only. 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. We conclude that the use of functional programming is one of the main drivers of the success of our project, and we see no significant downsides from it.<\/jats:p>","DOI":"10.1145\/3674633","type":"journal-article","created":{"date-parts":[[2024,8,15]],"date-time":"2024-08-15T12:49:04Z","timestamp":1723726144000},"page":"234-248","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":0,"title":["Functional Programming in Financial Markets (Experience Report)"],"prefix":"10.1145","volume":"8","author":[{"ORCID":"https:\/\/orcid.org\/0009-0005-1696-9822","authenticated-orcid":false,"given":"Atze","family":"Dijkstra","sequence":"first","affiliation":[{"name":"Standard Chartered Bank, London, United Kingdom"}]},{"ORCID":"https:\/\/orcid.org\/0009-0000-6253-0865","authenticated-orcid":false,"given":"Jos\u00e9 Pedro","family":"Magalh\u00e3es","sequence":"additional","affiliation":[{"name":"Standard Chartered Bank, London, United Kingdom"}]},{"ORCID":"https:\/\/orcid.org\/0009-0006-7863-307X","authenticated-orcid":false,"given":"Pierre","family":"N\u00e9ron","sequence":"additional","affiliation":[{"name":"Standard Chartered Bank, Singapore, Singapore"}]}],"member":"320","published-online":{"date-parts":[[2024,8,15]]},"reference":[{"key":"e_1_3_1_2_2","doi-asserted-by":"publisher","DOI":"10.1145\/2976002.2976016"},{"key":"e_1_3_1_3_2","volume-title":"Standard Chartered\u2014Annual Report 2023","author":"Standard Chartered Bank","year":"2024","unstructured":"Standard Chartered Bank. 2024. Standard Chartered\u2014Annual Report 2023. https:\/\/www.sc.com\/en\/investors\/financial-results\/, 1 Basinghall Avenue, London, EC2V 5DD, UK."},{"key":"e_1_3_1_4_2","unstructured":"Luke Clancy. 2019. Functional programming reaches for stardom in finance. https:\/\/www.risk.net\/6395366."},{"key":"e_1_3_1_5_2","doi-asserted-by":"publisher","DOI":"10.1145\/2491956.2462161"},{"key":"e_1_3_1_6_2","doi-asserted-by":"publisher","DOI":"10.1145\/2096148.2034690"},{"key":"e_1_3_1_7_2","unstructured":"Gerg\u0151 \u00c9rdi. 2022. Compiling Mu with GHC: Halfway Down the Rabbit Hole. Talk at the 2022 Haskell Implementors\u2019 Workshop. https:\/\/www.youtube.com\/watch?v=fZ66Pz7015Q"},{"key":"e_1_3_1_8_2","doi-asserted-by":"publisher","unstructured":"Felienne Hermans Bas Jansen Sohon Roy Efthimia Aivaloglou Alaaeddin Swidan and David Hoepelman. 2016. Spreadsheets are Code: An Overview of Software Engineering Approaches Applied to Spreadsheets. In 2016 IEEE 23rd International Conference on Software Analysis Evolution and Reengineering (SANER) Vol. 5. 56\u201365. https:\/\/doi.org\/10.1109\/SANER.2016.86 10.1109\/SANER.2016.86","DOI":"10.1109\/SANER.2016.86"},{"key":"e_1_3_1_9_2","doi-asserted-by":"publisher","DOI":"10.1145\/944705.944721"},{"key":"e_1_3_1_10_2","doi-asserted-by":"publisher","DOI":"10.1145\/357766.351267"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3674633","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3674633","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2026,2,4]],"date-time":"2026-02-04T07:49:48Z","timestamp":1770191388000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3674633"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2024,8,15]]},"references-count":9,"journal-issue":{"issue":"ICFP","published-print":{"date-parts":[[2024,8,15]]}},"alternative-id":["10.1145\/3674633"],"URL":"https:\/\/doi.org\/10.1145\/3674633","relation":{},"ISSN":["2475-1421"],"issn-type":[{"value":"2475-1421","type":"electronic"}],"subject":[],"published":{"date-parts":[[2024,8,15]]},"assertion":[{"value":"2024-02-28","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2024-06-18","order":2,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2024-08-15","order":3,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}