# Papers on Distributed Systems with Haskell and Maths

**URL:** <https://discourse.haskell.org/t/papers-on-distributed-systems-with-haskell-and-maths/7624>\
**Category:** Learn\
**Created:** [September 19, 2023, 7:55pm UTC](https://discourse.haskell.org/t/papers-on-distributed-systems-with-haskell-and-maths/7624 "2023-09-19T19:55:57Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![romes](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/romes/32/2912_2.png) [@romes](https://discourse.haskell.org/u/romes)\
**Post date:** [September 19, 2023, 7:55pm UTC](https://discourse.haskell.org/t/papers-on-distributed-systems-with-haskell-and-maths/7624/1 "2023-09-19T19:55:57Z")

</div>

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!

---

<div class="post-metadata">

**Author:** ![ApothecaLabs](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/apothecalabs/32/3215_2.png) [@ApothecaLabs](https://discourse.haskell.org/u/ApothecaLabs)\
**Post date:** [September 19, 2023, 8:37pm UTC](https://discourse.haskell.org/t/papers-on-distributed-systems-with-haskell-and-maths/7624/2 "2023-09-19T20:37:35Z")

</div>

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](https://haskell-distributed.github.io/) and [distributed-process](https://hackage.haskell.org/package/distributed-process), which is based on the paper [Towards Haskell in the Cloud](https://www.microsoft.com/en-us/research/wp-content/uploads/2016/07/remote.pdf), 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](http://discourse.haskell.org/t/botan-bindings-devlog/6855/) is going to collide spectacularly with my weird [blogs about indexed recursion](https://apotheca.io/articles/Sourced-Recursion-Schemes.html) in the future.

---

<div class="post-metadata">

**Author:** ![atravers](https://avatars.discourse-cdn.com/v4/letter/a/45deac/32.png) [@atravers](https://discourse.haskell.org/u/atravers)\
**Post date:** [September 19, 2023, 8:38pm UTC](https://discourse.haskell.org/t/papers-on-distributed-systems-with-haskell-and-maths/7624/3 "2023-09-19T20:38:29Z")

</div>

There’s also a [list of papers](https://www.macs.hw.ac.uk/~dsg/gdh/#papers) at the Glasgow Distributed Haskell (GdH) [site](http://www.macs.hw.ac.uk/~dsg/gdh).

---

<div class="post-metadata">

**Author:** ![romes](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/romes/32/2912_2.png) [@romes](https://discourse.haskell.org/u/romes)\
**Post date:** [September 19, 2023, 9:02pm UTC](https://discourse.haskell.org/t/papers-on-distributed-systems-with-haskell-and-maths/7624/4 "2023-09-19T21:02:18Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![jaror](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/jaror/32/3271_2.png) [@jaror](https://discourse.haskell.org/u/jaror)\
**Post date:** [September 19, 2023, 9:16pm UTC](https://discourse.haskell.org/t/papers-on-distributed-systems-with-haskell-and-maths/7624/5 "2023-09-19T21:16:22Z")

</div>

Maybe [Unison](https://www.unison-lang.org/) is also of interest?

---

<div class="post-metadata">

**Author:** ![atravers](https://avatars.discourse-cdn.com/v4/letter/a/45deac/32.png) [@atravers](https://discourse.haskell.org/u/atravers)\
**Post date:** [September 19, 2023, 9:34pm UTC](https://discourse.haskell.org/t/papers-on-distributed-systems-with-haskell-and-maths/7624/6 "2023-09-19T21:34:34Z")

</div>

…or [Motoko](https://stackoverflow.blog/2020/08/24/motoko-the-language-that-turns-the-web-into-a-computer)? If not, another option is Erlang:

- [Erlang -- Distributed Erlang](https://www.erlang.org/doc/reference_manual/distributed.html)

- [Making reliable distributed systems in the presence of software errors](https://erlang.org/download/armstrong_thesis_2003.pdf) (2003)

- [List of academic/research papers involving Elixir/Erlang - Resources Chat/Questions - Elixir Programming Language Forum](https://elixirforum.com/t/list-of-academic-research-papers-involving-elixir-erlang/25686)

---

<div class="post-metadata">

**Author:** ![haroldcarr](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/haroldcarr/32/4173_2.png) [@haroldcarr](https://discourse.haskell.org/u/haroldcarr)\
**Post date:** [September 19, 2023, 10:29pm UTC](https://discourse.haskell.org/t/papers-on-distributed-systems-with-haskell-and-maths/7624/7 "2023-09-19T22:29:57Z")

</div>

[HasChor: Functional Choreographic Programming for All (Functional Pearl)](https://arxiv.org/abs/2303.00924)

---

<div class="post-metadata">

**Author:** ![bolt12](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/bolt12/32/2293_2.png) [@bolt12](https://discourse.haskell.org/u/bolt12)\
**Post date:** [September 20, 2023, 5:19pm UTC](https://discourse.haskell.org/t/papers-on-distributed-systems-with-haskell-and-maths/7624/8 "2023-09-20T17:19:11Z")

</div>

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/](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](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 😁
