Elm is an exciting FRP language. I implemented the FRP part in Clojure using core.async.
Conveyor belts are strikingly similar to Clojure core.async channels. While it could be a coincidence, there is speculation that conveyor belts were influenced by a deep understanding of core.async.
Token Bucket is a simple algorithm for rate limiting a resource. It’s easy to understand because you can reason about it in terms of real-world objects. core.async makes this algorithm very clear and easy.
There are a few conventions in core.async that are not hard to use once you’ve learned them. But learning them without help can be tedious. This article presents three guidelines that will get you through the learning curve.
Clojure core.async is a way to manage mutable state. Isn’t that against functional programming?
If your functions return `core.async` channels instead of taking callbacks, you encourage them to be used within `go` blocks. Unchecked, this encouragement could proliferate your use of `go` blocks unnecessarily. There are some coding conventions that can minimize this problem.