Martin A.T. Handley

I'm a second year PhD student in the Functional Programming Lab at the University of Nottingham. I'm currently researching about new theories for reasoning about program efficiency in a lazy setting, and also developing tools to aid this process. Helping me are my supervisers Professor Graham Hutton and Professor Thorsten Altenkirch.

Please email me if you can help too!


AutoBench: comparing the time performance of Haskell programs

(pdf)
Martin A.T. Handley and Graham Hutton
To appear in the Proceedings of the Haskell Symposium, St. Louis, Missouri, USA, June 2018.
Two fundamental goals in programming are correctness (producing the right results) and efficiency (using as few resources as possible). Property-based testing tools such as QuickCheck provide a lightweight means to check the correctness of Haskell programs, but what about their efficiency? In this article, we show how QuickCheck can be combined with the Criterion benchmarking library to give a lightweight means to compare the time performance of Haskell programs. We present the design and implementation of the AutoBenchsystem, demonstrate its utility with a number of case studies, and find that many QuickCheck correctness properties are also efficiency improvements.

Improving Haskell

(pdf)
Martin A.T. Handley and Graham Hutton
To appear in the Proceedings of the Symposium on Trends in Functional Programming, Gothenburg, Sweden, March 2018.
Lazy evaluation is a key feature of Haskell, but can make it difficult to reason about the efficiency of programs. Improvement theory addresses this problem by providing a foundation for proofs of program improvement in a call-by-need setting, and has recently been the subject of renewed interest. However, proofs of improvement are intricate and require an inequational style of reasoning that is unfamiliar to most Haskell programmers. In this article, we present the design and implementation of an inequational reasoning assistant that provides mechanical support for improvement proofs, and demonstrate its utility by verifying a range of improvement results from the literature.

AutoBench

(github)
Martin A.T. Handley

A lightweight, automated tool for comparing the time performance of Haskell programs. Below is an example use case where we compare the well-known slow and fast reverse functions.

User input:

slowRev_vs._fastRev

System output (to file):

slowRev_vs._fastRev

System output (to console):

slowRev_vs._fastRev

University of Nottingham Improvement Engine (Unie)

(github)
Martin A.T. Handley

A Haskell implemented inequational reasoning assistant that provides mechanical support for proofs of time improvement in a lazy setting. Below is a short video of the system in action.

FPL Representative in the PGR-LCF (2017-18)


The LCF aims to ensure that the views of the postgraduate research students are given proper weight and that concerns they may have about supervision, progress, specific training, development opportunities, career, etc. are being addressed.

Teaching Assistant

  • Lab Assistant, Compilers (2017)
  • Lab Assistant, Programming in Python (2017)
  • Lab Assistant, Systems and Architecture (2016-17)
  • Lab Assistant, Advanced Functional Programming (2016-2017)
  • Lab Assistant, Computer Fundamentals (2016-17)
  • Lab Assistant, Computer Security (2016)
  • Lab Assistant, Programming Paradigms (2016-17)
Last updated on 16 May 2018