Reading Group Archive (2012)

Scrap Your Boilerplate

On December 14 we discussed the first paper in the "Scrap Your Boilerplate" series which shows how to do generic programming in Haskell using an approach based on typed strategic programming: Scrap your boilerplate: a practical approach to generic programming by Ralf Laemmel and Simon Peyton Jones.

Types for Strategies

On November 30 we discussed the application of the ideas from Laemmel's Typed generic traversal with rewrite strategies paper to the Kiama library's rewriting component.

On November 2, 9 and 16, we discussed type systems for generic rewrite strategies. Our discussion was based on the paper Typed generic traversal with term rewriting strategies by Ralf Laemmel.


On October 26, we discussed the new TypeScript language from Microsoft. To guide the discussion we will watch the video Introducing TypeScript by Anders Hejlsberg. More information on TypeScript, including the language specification, is available from the main TypeScript site.

Software Failure Diagnosis with Spectral Debugging

In the second hour on October 19, we hosted an external speaker, Jason Lee speaking on software failure diagnosis.

Abstract: In my research area, I am investigating approaches to assist diagnosis of failures in software program. Program statements or blocks are ranked according to how likely they are to be buggy, based on what statements are executed in test cases. A very simple single-bug program is used to model the problem. By examining different possible execution paths through this model program over a number of test cases, the effectiveness of different proposed spectral ranking methods can be evaluated in idealized conditions. The results are remarkably consistent to those arrived at empirically using the Siemens test suite and Space benchmarks. I also investigated different approaches on multiple-bug programs by using different weights for failed tests to provide information to the bug. Finally, I looked into using frequency information of test coverage to help locate bugs more effectively as compared to using binary information. These approaches showed improved significant bug localization performance across the above mentioned benchmarks.

Object Algebras

On October 19, in the first hour we continued our discussion of object algebras from last week, looking at a Scala implementation and considering alternative implementations as raised in our discussion from last week.

On October 12, we discussed a paper on solving the expression problem using object algebras by Bruno Oliveira and William Cook. This paper won the best paper award at ECOOP 2012.

Turing-Complete Templates

On September 28, we discussed an article on Turing-Complete Templates in liftweb by Matt Roberts.

Parsing with Derivatives

On September 21, we discussed an ICFP 2011 paper on Parsing with Derivatives by Might, Darais and Spiewak.

Controlled Natural Languages

On September 14, Rolf Schwitter from Macquarie University presented some of his work on controlled natural languages:

Answer Set Programming via Controlled Natural Language Processing

Controlled natural languages are subsets of natural languages that can be used to describe a problem in a very precise way, furthermore they can often be translated automatically into a formal notation. We investigate in this paper how a controlled natural language can be used as a specification language for Answer Set Programming (ASP). ASP is a declarative approach to problem solving and has its roots in knowledge representation, logic programming, and constraint satisfaction. Solutions of ASP programs are stable models (= answer sets) that build the starting point for question answering. As a proof of concept, we translate a problem specification written in controlled natural language into an ASP program and compute a stable model that contains the answers to a number of questions.


On September 7, we discussed a paper about the history of the Lua programming language. Lua began as a simple configuration language but has expanded to a general scripting language to rival more well-known counterparts such as Python and Ruby. Lua is particularly widely used as a scripting language for game platforms.

Concrete object syntax

On August 31, we continued our discussion of concrete object syntax as realised by the SDF and Stratego program transformation tools. Two papers were discussed: a paper on SDF support for concrete syntax and a paper on an application of these ideas to concrete syntax for a Prolog-based program synthesis system.

On August 24, we discussed the paper Concrete syntax for objects by Martin Bravenboer and Eelco Visser (OOPSLA 2004). This work presents a solution to the problem of embedding the syntax of a language within another language.

sbt-rats: packrat parser generation for Scala

On August 17, Tony Sloane gave a talk about his sbt-rats plugin for the Scala simple build tool, which provides support for using the Rats! parser generator from Scala.