7.9. Summary#
Concurrent programming is challenging, which perhaps explains why there are so many different libraries and language features that support it. Promises are elegant and useful both in functional and imperative programming. But they are not the last word: OCaml 5 recently added new mechanisms for parallelism and concurrency based on domains and threads. You might find it interesting to read more about those in the OCaml manual.
7.9.1. Terms and Concepts#
asynchronous
bind
blocking
callback
channel
computations
concurrent
concurrent composition
cooperative
deterministic
effects
interleaving
latency hiding
left identity
Lwt monad
maybe monad
monads
monad laws
non-blocking
nondeterministic
parallelism
pending
preemptive
promises
race conditions
rejected
resolution loop
resolved
resolver
right identity
sequential
sequential composition
standard input
standard output
synchronous
threads
writer monad
7.9.2. Further Reading#
Real World OCaml, chapter 16
The Lwt Manual