Communicating Haskell Processes

Brown, Neil C.C. (2011) Communicating Haskell Processes. Doctor of Philosophy (PhD) thesis, University of Kent. (Full text available)

PDF - Publisher pdf
Download (1MB) Preview


Concurrent programming supports multiple threads of concurrent execution. It is a suitable paradigm for interaction with the outside world, where many inputs (e.g. network packets, key-presses, mouse-clicks) may arrive at any time and need to be dealt with at the same time. Concurrent execution also potentially allows for parallel speed-up; multicore machines are now the standard for new PCs, but the quest to take full advantage of the available parallelism continues. One approach to concurrent programming is process-oriented programming, which uses message-passing and is based on Hoare and Roscoe's Communicating Sequential Processes (CSP). CSP is a process calculus centred on concurrent processes that communicate with each other via synchronous channels. This is used as a formal underpinning for process-oriented programming, either directly (proving behaviours of programs with a CSP model checker) or indirectly (providing sound design principles and patterns). Process-oriented programming has previously been provided in programming languages such as occam-� and libraries for other mainstream languages such as Java and C++. However, as yet process-oriented programming has failed to gain much traction via these implementations; occam-� is rooted in the much older language occam and thus lacks powerful data structures (among other features) which are standard in most modern languages { while languages such as Java and C++, where data is mutable and easily shared, can be an awkward fit to process-oriented programming. Haskell is a functional programming language that is notable for its purity, type-classes, monads and lazy evaluation: modern features that provide interest- ing and powerful ways to program, including good support for imperative pro- gramming. Like other functional languages, it eliminates mutable data -- which immediately removes a whole class of problems in concurrent programming. This thesis contends that CSP and process-oriented programming �t well with Haskell. The thesis details the creation of a CSP library for Haskell (Commu- nicating Haskell Processes: CHP) { which features powerful support for process composition { and its further augmentation with capabilities such as support for a new concurrency primitive (conjunction), tracing and the ability to generate formal models of CHP programs. This allows programmers to build concurrent message-passing systems with a strong formal underpinning in a modern program- ming language, with more features and less complications than process-oriented libraries for other languages.

Item Type: Thesis (Doctor of Philosophy (PhD))
Subjects: Q Science > QA Mathematics (inc Computing science) > QA 76 Software, computer programming,
Divisions: Faculties > Sciences > School of Computing > Programming Languages and Systems Group
Depositing User: Neil Brown
Date Deposited: 09 May 2013 15:37 UTC
Last Modified: 13 May 2014 09:02 UTC
Resource URI: (The current URI for this page, for reference purposes)
  • Depositors only (login required):


Downloads per month over past year