Location of Repository

Communicating Haskell Processes: Composable Explicit Concurrency Using Monads

By Neil C.C. Brown


Writing concurrent programs in languages that lack explicit support for concurrency can often be awkward and difficult. Haskell's monads provide a way to explicitly specify sequence and effects in a functional language, and monadic combinators allow composition of monadic actions, for example via parallelism and choice two core aspects of Communicating Sequential Processes (CSP). We show how the use of these combinators, and being able to express processes as first-class types (monadic actions) allow for easy and elegant programming of process-oriented concurrency in a new CSP library for Haskell: Communicating Haskell Processes

Topics: QA76
Publisher: IOS Press
Year: 2008
OAI identifier: oai:kar.kent.ac.uk:24103

Suggested articles



  1. (2006). A Fast Resolution of Choice between Multiway Synchronisations (Invited Talk). In
  2. (1973). A Universal Modular ACTOR Formalism for Artificial Intelligence. In
  3. (2006). An Introduction to CSP.NET.
  4. (2003). An Introduction to the Kent C++CSP Library.
  5. (2007). C++CSP2: A Many-to-Many Threading Model for Multicore Architectures.
  6. (1999). CCSP – A Portable CSP-Based Run-Time System Supporting C and occam.
  7. (2006). Communicating complex systems. doi
  8. (2005). Communicating mobile processes: introducing occam-pi.
  9. (1985). Communicating Sequential Processes. doi
  10. (1999). Communicating Threads for Java.
  11. (2005). Composable memory transactions. doi
  12. (1996). Concurrent Haskell. In doi
  13. (1993). Concurrent Programming in Erlang. doi
  14. (1999). Erlang-style distributed Haskell.
  15. (2007). Fine-grain concurrency. doi
  16. (1995). First-class synchronous operations. doi
  17. (1989). Graceful termination – graceful resetting.
  18. (1989). Graceful termination – graceful resetting. In Andr`
  19. (2003). Haskell#: Parallel programming made simple and efficient. doi
  20. (1993). Imperative functional programming. doi
  21. (2007). Integrating and Extending JCSP. doi
  22. (2005). Managing Complexity of Control Software through Concurrency.
  23. (2007). PyCSP – Communicating Sequential Processes for Python.
  24. (2006). Rain: A New Concurrent Process-Oriented Programming Language.
  25. (2004). Redesign of the C++ Communicating Threads Library for Embedded Control Systems.
  26. (2005). SimonMarlow, Simon Peyton-Jones, andMaurice Herlihy. Composable memory transactions. doi
  27. (2003). The Honeysuckle programming language: an overview. doi
  28. (1988). The laws of occam programming. doi

To submit an update or takedown request for this paper, please submit an Update/Correction/Removal Request.