A bare bone fork-join DSL in Scala developed with @vitlinda as a funny exercise. It uses the "free operational monad" encoding to get a nice syntax for the DSL for free (pun intended).
Our goal was to create a basic DSL for describing distributed programs and later give them semantics by interpreting them. This is 100% just an experiment and far from being complete. The end goal would be to have a minimal library that would allow one to implement a fork-reduce distributed computation.
Future work:
- Create an interpreter to draw a graph of the distributed computation (à la Unison Remote Ability)
- Create an interpreter that can simulate network failure (for example given a chance the failure could occur) (
Fiber.getResult
should return anEither
to model possible failure, so this is a change we would have to implement)