- Parallel programming
- Functional programming
- Data structures and algorithms
- Programming Languages and Models
My core research focus is 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 quadtree, 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 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) , across languages incl. Haskell, F# and Scala , and for heterogeneous computing .