My entry for the 2014 ICFP Programming Contest