Papers on Distributed Systems with Haskell and Maths

Hey all,

I’m looking for pointers regarding research that combines / explores connections between abstractions in Haskell and Distributed Systems, or that relates DS to mathematical abstractions and/or category theory in general.

I’ll be also be happy to learn about other interesting ways distributed systems and functional programming language (theory) come together

Thanks!

2 Likes

This question is actually what got me into Haskell in the first place.

It was 2015-ish, height of the blockchain boom, and I’d recently learned Erlang to learn to build distributed systems because I was interested in generalizing git from file trees to arbitrary data structures. A friend pointed me towards Cloud Haskell and distributed-process, which is based on the paper Towards Haskell in the Cloud, and I ended up learning Haskell because this.

Cloud Haskell was simultaneously mindblowing, and also not the answer I was looking for. It’s more of a remote process management and network transport good for setting up RPC, but also lacking any tools to make your data model / functions actually distributed like in git and other blockchains. Honestly, I get more use out of servant because JSON APIs provide interop with other services.

After that I read lots of various papers about process calculi, and actor systems, but those models were not very functional, and were often stateful / object-oriented (Actor models be object oriented? I’m shocked!) or again focused on transport and not content.

Ever since then, I’ve been working on my own model of distributed computing by extending a type system to describe both who is performing a calculation and how it is fragmented, and to use merkle proofs to make arbitrary expressions distributable (distributed-turing-complete?). My cryptography work is going to collide spectacularly with my weird blogs about indexed recursion in the future.

4 Likes

There’s also a list of papers at the Glasgow Distributed Haskell (GdH) site.

1 Like

Beautiful! I’m very much looking forward to your work on this space.

1 Like

Maybe Unison is also of interest?

1 Like

…or Motoko? If not, another option is Erlang:

HasChor: Functional Choreographic Programming for All (Functional Pearl)

1 Like

In the IOG networking team, we’ve been working to share more insights about our journey in building and managing a real-time distributed system.

You might find our recent blog post informative: https://engineering.iog.io/2023-06-28-p2p/. Additionally, I’ve presented several talks discussing the synergy between functional programming and distributed systems. We believe functional programming, and Haskell in particular, has played a pivotal role in enhancing the quality of our system.

For further details, you can check out the slides from my latest presentation: https://github.com/bolt12/opodis22-presentation/blob/waterloo-23/Demo.pdf.

It’s worth noting that distributed systems aren’t necessarily the solution to a clear-cut mathematical problem, which can make them challenging to reason about. So I don’t think you’ll find a compelling answer but I’d like to be proven wrong! Looking forward to hear your findings on this!

From my experience, using Haskell in distributed systems has underscored the power of the purely functional paradigm. It not only simplifies managing the inherent complexity but also streamlines testing, improving the reliability and robustness of the system in a… sane manner :grin:

3 Likes