August 8, 2024 6:00 PM – 8:00 PM EDT
Indy Hall
709 N 2nd St 3rd Floor Philadelphia, PA 19123JavaScript is one of many languages that have introduced an async/await syntax. Like in most of those languages, it's common to find both synchronous and async versions of many operations — especially outside the browser. In languages that don't have async/await, there's generally no split like this — because every operation is synchronous.
But what about a language where there was no split because all the I/O operations were async/await? This is essentially the way things work in the Roc programming language (which compiles to WebAssembly as well as to machine code), and the language uses this property to guarantee that everything surrounding the await calls is a pure function.
This talk is about how that design has worked out in practice, how Roc does async/await differently from other languages, and what all of this reveals about the relationship between asynchronous effects and pure functions!
Richard Feldman is a longtime JavaScript programmer who has gotten more and more into other languages over time. He's the author of “Elm in Action” from Manning Publications, the host of the podcast Software Unscripted, and the instructor for several Frontend Masters workshops: Introduction to Elm, Advanced Elm, and Introduction to Rust. He currently writes Rust at Zed Industries, helping to make the Zed the world's best code editor.