Using this book as part of a course? Please let us know!

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#