# References ## Presentations Embedding generic monadic transformers into scala. * TFP2022 slides: (May 2022) * article: * preprint: Can we free concurrent programming from the monadic style: * ScalaR: (June 2020) * ScalaUA: (April 2020) * slides: ## Related work in Scala 2 - Scala-continuations. paper: - Scala-async: - Storm-enroute coroutines: - Thoughtworks DSL.scala: - Monadless.io: - Effectful: - Scala-gopher tech report: ## Related work in Scala 3 - Monadic-reflection (requires a [project Loom](https://openjdk.java.net/projects/loom/) enabled JVM) - Thoughtworks DSL.scala recently ported to Scala 3: - zio-direct (direct translation of a subset of scala on top of ZIO effect system) - Scrout scala compiler plugin (direct context encoding, implemented as suspend FA on top of JVM): and related SIP submission: ## Related work in other languages - Historical overview: - [ANSI C++][ansi_cplusplus]: - N4134 (C++17 proposal (implemented but deferred) ) - N4680 (C++20 stackless coroutines proposal) - Blog - Imlplementation of C++ coroutines: - [C#](https://docs.microsoft.com/en-us/dotnet/csharp/): - C# Asynchronous programming: - Midori project (Async OS, written in C#): - [Dart]: - Guide: - Formal specs: (async intro on page 18) - Spicing Up Dart with Side Effects (streams extension) - Firefly: - Blog post about analog of automatic coloring: https://www.ahnfelt.net/async-await-inference-in-firefly/ - [F#][fsharp]: - F# Computation Expression: - Paper: - Joinad language extension (paper): http://tomasp.net/academic/papers/joinads/joinads.pdf - F# Computation Expression Zoo (paper): http://tomasp.net/academic/papers/computation-zoo/computation-zoo.pdf - [Go][golang]: - [Concurrency in Go][golang_concurrency]. - [Java]: - [On Parallelism and Concurrency][pressler] by Ron Pressler, November 2021. - [JavaScript](https://developer.mozilla.org/en-US/docs/Web/JavaScript): - async function: - [**funfix-effect**][funfix-effect] - monadic data types for dealing with laziness and side effects. - [Koka]: - Paper: "Structured Asynchrony with Algebraic Effects" - [Kotlin]: - [Kotlin Coroutines Guide][kotlin_coroutines]. - [Nim]: - Nim macro module - [OCaml]: - Paper: "Concurrent System Programming with Effect Handlers": - Effects tutorial (CUFP'17) - Paper: Retrofitting Effect Handlers onto OCaml. - [Python 3][python3]: - PEP-0492 - Coroutines with async and await syntax: - [Trio] - a friendly Python 3 library for async concurrency and I/O. - [Rust]: - Async-Await working group: - Book "Asynchronous Programming in Rust": - Rust language reference: - [Tokio](https://tokio.rs/tokio/tutorial) - an asynchronous runtime for [Rust]. - [Swift]: - Proposal: - [Zig]: - Description: - Article about doing async implicit ('colorblind'): ## Monadic Computations in Functional Programming (unrelated to PO Syntax, most examples are Haskell). - Extending monads via pattern matching (joinads for haskell): - ‘do’ Unchained: Embracing Local Imperativity in a Purely Functional Language (Lean): [ansi_cplusplus]: https://isocpp.org/ [dart]: https://dart.dev/codelabs/async-await [fsharp]: https://fsharp.org/ [funfix-effect]: https://funfix.org/api/effect/ [golang]: https://go.dev/ [golang_concurrency]: https://www.golang-book.com/books/intro/10 [java]: https://docs.oracle.com/javase/specs/ [koka]: https://koka-lang.github.io/ [kotlin]: https://kotlinlang.org/ [kotlin_coroutines]: https://kotlinlang.org/docs/reference/coroutines/coroutines-guide.html [nim]: https://nim-lang.org/ [ocaml]: https://ocaml.org/ [pressler]: https://inside.java/2021/11/30/on-parallelism-and-concurrency/ [python3]: https://www.python.org/ [rust]: https://trio.readthedocs.io/ [swift]: https://developer.apple.com/swift/ [trio]: https://trio.readthedocs.io/ [zig]: https://ziglang.org/