My PhD research focuses on the design and implementation of inherently parallel data structures in Haskell. At present, I'm implementing data structures to be used mostly at the application or user level, e.g. parallel trees and graphs, available as libraries to be used in programs to benefit from parallelism for free or with minimal code changes. I look at specialised structures such as random-access list, which uses alternative underlying representation as opposed to traditional list, and tree-like strutures (e.g. quadtree, graphs), which is useful in a number of applications. I want to look more into system-level structures, such as those used in RTS (e.g. double-ended queue, "pool"). That would most likely require the use of fairly low-level parallel/concurrent primitives available in Haskell, as opposed to the high-level parallel programming abstraction that I'm currently using for the user-level structures.

Previously we surveyed parallel programming models for the Haskell language covering parallel extensions (GpH, Eden) and libraries (Par monad) [2], across languages incl. Haskell, F# and Scala [3], and for heterogeneous computing [4].


[upcoming] [past] [other]