I am Michael Walker, otherwise known online as barrucadu. I am currently a Ph.D student in the Department of Computer Science at the University of York.
My research relates to nondeterministic concurrency in pure functional programming languages, such as Haskell. Increasingly, turning to concurrency for performance gains is a no-brainer, but it can be hard to get it right. Concurrency is hard in a number of areas:
Testing, due to nondeterminism inherent in the underlying primitives and abstractions, meaning we need new techniques.
Formal verification, in the presence of abstractions like first-class functions, lazy evaluation, and “higher-order” state; many of which are essential in a pure functional language.
Optimisation, as compiler optimisations typically stop as soon as side-effects are involved.
My recent work has been on checking temporal logic properties of concurrent Haskell programs, building upon the Deja Fu work documented in a paper and a technical report. I plan to submit a paper on this to RV’16, I am also preparing a new account of Deja Fu to submit to the Journal of Functional Programming.
The plans for the rest of my Ph.D include:
Systematic testing of temporal logic properties (current work).
Safe, automated, concurrency introduction for generate-and-test search computations.
Using types to enforce interesting concurrent safety properties, beyond just deadlock freedom.
Refactoring, performance improvements, tweaks, "93 commits to master since this [0.2.0.0] tag". Let's see what changed.
“Strict-by-default vs Lazy-by-default”
In every discussion of Haskell, the issue of strict vs lazy evaluation comes up. I compare the pros and cons (one of which is really bad) of laziness, and justify why I think it's still a better default.