@InProceedings{Brown08a, title = "{C}ommunicating {H}askell {P}rocesses: {C}omposable {E}xplicit {C}oncurrency {U}sing {M}onads", author= "Brown, Neil C.C.", editor= "Welch, Peter H. and Stepney, S. and Polack, F.A.C and Barnes, Frederick R. M. and McEwan, Alistair A. and Stiles, G. S. and Broenink, Jan F. and Sampson, Adam T.", pages = "67--83", booktitle= "{C}ommunicating {P}rocess {A}rchitectures 2008", isbn= "978-1-58603-907-3", year= "2008", month= "sep", abstract= "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." }