David Laing


Haskell Enthusiast

Dave has been programming in Java/Python/C++ for years and years. He came across Haskell along the way and made the decision to dive in about 18 months ago. This has been followed by a lot of code, a handful of talks, and haranguing people to read various textbooks. More of all of these are likely in the foreseeable future.

YOW! Lambda Jam 2014 Brisbane

QuickCheck: Beyond the Basics


The goal of the talk is to demonstrate non-trivial uses of QuickCheck for testing Haskell programs. Outside of papers and book chapters, most of the information on QuickCheck only covers very basic usage. This talk is about the more advanced uses of QuickCheck, including the use of QuickCheck with monadic code, as well as how QuickCheck can be used in the parallel development of code and specifications.

The talk will begin with a very brief overview of the usual basic level QuickCheck as described in Real World Haskell and various sources on the internet. This will introduce some tests involving sorting and searching. These tests will be iterated on to demonstrate the development of QuickCheck specifications, along with some of the more advanced features of QuickCheck and how to avoid some common errors.

The next part of the talk will develop a purely functional queue and show that it is correct via both an algebraic specification and a model-based specification. This should give a really good feel for how to develop useful specifications and what they typically end up looking like.

The final part of the talk will cover the use of QuickCheck with monadic code. As well as demonstrating the use of the monadic interface to QuickCheck, this will work through a few small examples to help build an intuition for the kinds and scopes of problems which QuickCheck can be applied to.

Extended versions of the example code, slides and links to the reference materials used will be available via github.