Haskell Weekly News: September 27, 2006

Submitted by dons on Wed, 09/27/2006 - 12:42am.

Welcome to issue 42 of HWN, a weekly newsletter covering developments in the Haskell community. Each week, new editions are posted to the Haskell mailing list as well as to the Haskell Sequence and Planet Haskell. RSS is also available, and headlines appear on haskell.org.

This week we see a new Hugs release, and the results of the ICFP contest are out! We feature a special report on the Commercial Users of Functional Programming workshop, courtesy of John Hughes


  • ICFP Contest Results. CMU's Principles of Programming Group announced the results of this year's ICFP programming contest. Congratulations to the winning team from Google, 'Team Smartass', (Christopher Hendrie, Derek Kisman, Ambrose Feinstein and Daniel Wright), who used Haskell along with C++, Bash and Python. Haskell has now been used by the winning team three years running! An honourable mention to team Lazy Bottoms, another Haskell team, who managed to crack several of the puzzles first. Five teams from the #haskell IRC channel were placed in the top 50. A video stream of the results announcement is available, shot and cut by Malcolm Wallace. Many thanks to the CMU team for organising such a great contest!

  • New release of Hugs. Ross Paterson announced a new minor release of Hugs, fixing a few bugs with the May 2006 release, and with libraries roughly matching the forthcoming GHC 6.6 release. It is available from the Hugs page.

  • HAppS version 0.8.2. Einar Karttunen announced the release of the Haskell Application Server version 0.8.2. HAppS is a Haskell web application server for building industrial strength internet applications safely, quickly, and easily. With HAppS you focus entirely on application functionality implemented in your favourite language and you don't have to worry about making sure all sorts of server subsystems are functioning properly. More info.

  • Codec.Compression.GZip and .BZip. Duncan Coutts released two new packages: zlib and bzlib, which provide functions for compression and decompression in the gzip and bzip2 formats, directly on ByteStrings. Both provide pure functions on streams of data represented by lazy ByteStrings. This makes it easy to use either in memory or with disk or network IO. There is API documentation is available here and here.

  • System Fc branch merged into GHC. Manuel Chakravarty merged the System Fc branch of GHC into GHC head. This is a significant development, adding extensions to GHC to support an FC-based intermediate language, a new implementation of GADTs, along with indexed data types and indexed newtypes (generalised associated data types). More details about the implementation.

  • Job writing security software in Haskell. Andrew Pimlott announced that Planning Systems, Inc. has a job opportunity for Haskell programmers, writing a high-assurance authorization system. Job description.

  • Dr Haskell 0.1. Neil Mitchell released Dr Haskell, a tool to help suggest improvements to your Haskell code. Dr Haskell will analyse your code, and suggest shorter alternatives for rewriting. More details.

  • BitSyntax for Haskell. Adam Langley released a bit syntax library for Haskell, based on Erlang's bit syntax (great for building and breaking up binary structures). Nice!

  • File fuzzing. Tim Newsham made available FileH, a Haskell tool for generating test data via random file mutation. More details.

  • A DSL for state machines. Stephane Bortzmeyer announced a Haskell implementation of a proposal to the IETF to standardize a language used for finite state machines (which are common in IETF standards). The reference implementation is available.

  • A language tag parser. Stephane Bortzmeyer announced GaBuZoMeu, a set of programs to parse and check language tags (see RFC 4646 produced by the IETF Working Group LTRU - Language Tag Registry Update).


This section covers the Haskell' standardisation process.

Conference roundup

The Commercial Users of Functional Programming workshop (CUFP), held in association with ICFP, attracted a record turn-out this year. 57 attendees came to listen to 9 speakers talk about commercial uses of Scheme, Erlang, Reflect, OCaml, and Haskell. Four of the speakers talked about applications of Haskell.
  • Linspire in Haskell. Clifford Beshers talked about the adoption of Haskell at Linspire. Linspire switched recently from OCaml to Haskell, citing readability, classes, the IO monad, and more complete libraries as reasons. So far CGI scripts and a package autobuilder have been implemented in Haskell. Static typing, and the use of purely functional data structures on disk, have helped make for reliable code. Performance has been generally good, although Parsec parsers proved to be slow on larger files--a problem that was solved using Data.ByteString. Space leaks have not been a problem, perhaps because frequent IO keeps programs strict. Belying the myth that functional programmers are hard to recruit, Linspire's announcement that they were adopting Haskell generated several resumes, despite explicitly stating that they were not recruiting.

  • Haskell programming at Credit Suisse. Howard Mansell talked about Haskell programming at Credit Suisse in New York. This group's business is derivative trading for clients. Valuing complex derivatives is computationally costly, requiring nightly runs on thousands of CPUs. There is a real competitive advantage in being able to build models quickly, since some exotic derivatives may only be traded 10-100 times in total. Previously models were built using Excel, with heavy computations delegated to C++ plugins. Most of the Excel code has now been replaced by Haskell, with Excel just providing the user interface (which in turn is generated by DSELs). The work has been done by Lennart Augustsson and Gabriele Keller, but Credit Suisse needs more Haskell programmers -- they're hiring.

  • Hardware design at Bluespec Inc.. Rishiyur Nikhil talked about Bluespec Inc, which offers System Verilog tools implemented in about 90K loc of Haskell. Bluespec's tools are based on MIT research in the 90s into generating hardware from term rewriting systems; using Bluespec's 'rules' complex hardware can be described at a high level, improving productivity and reducing errors. Selling the tools based on Haskell requires short, punchy examples to convince old hands that there is a better way than writing RTL by hand. Bluespec have started sales, and many more trials are under way.

  • Aetion, AI and Haskell. Garret Morris talked about Haskell applications at Aetion, which is a defence contractor offering AI applications based on Bayesian nets. Rapidly changing priorities make it important to minimize the code impact of changes, which suits Haskell well. Aetion have developed three main projects in Haskell, all successful. Haskell's concise code was perhaps most important for rewriting: it made it practicable to throw away old code occasionally. DSELs allowed the AI to be specified very declaratively. Less successful was the decision to link Haskell to a GUI in Java: the need to serialize data made it impossible to use functions as representations, which was unfortunate. Other issues included getting libraries to work together, patchy Windows support, and a need for more debugging tools.


  • Curious Functor class. Ashley Yakeley described the curious class of functors for which foralls can move across.

  • Variadic functions and typeCast. Michael Shulman submitted a general version of the trick to implement variadic functions in Haskell outlined by Oleg

  • Serialising existential types. Misha Aizatulin pondered the interesting problem of serialisation of datatypes with existential constructors. Several options were suggested.

  • Replacing GMP. Peter Tanski updated the page relating to portably replacing GMP in GHC (and other Haskell systems)

Blog noise

Haskell news from the blogosphere.

Quotes of the Week

  • Clifford Beshers : "When we code in Haskell, we go home on time"
  • Bulat : "There is new Time library, which is supposed to replace old System.Time. We hope that it will happen before 2038"
  • edwardk : "I should probably just type up the problem specification in Haskell and click compile. Funny how that seems to yield the answer"
  • vincenz : "OCaml used to be pretty, Haskell made it ugly"
  • glguy : "I remember what class I was in when I was reading Hudak's book and discovered `fix'. Life altering..."
  • glguy : "> take 10 $ map length $ fix (([()]:).scanl (++) [()])"
  • lambdabot :"[1,1,2,3,5,8,13,21,34,55]"
  • agentzh : "Haskell is really a powerful weapon"
  • gaal : "You know you've been reading lots of Haskell papers when... someone says '(bbiab, $job)' and you try mentally to run :t on that"
  • audreyt : "Pugs seems to be just my excuse to apply each and every technique from the GHC changelogs..."
  • Pseudonym : "[OlegFacts] Oleg solves N P-hard problems in N log N time... in the type system"
  • dons : "[On improving Cabal dependency handling] fps 0.8 is an exemplary instance of part number fps 0.8. Interestingly, this one is lavender. Also, it is broken: it is (a fps 0.8 missing a base 1.0)."
  • Mark Bessey : "When really massively-parallel systems start to become more common, the programming model will have to change. What languages you'll likely use to program these beasts is an interesting question - most likely, it'll be a functional language, something like Haskell, or Erlang."
  • Philippa : "[vincenz] Forget theory, it's about pragmatics [Philippa] we're talking FP, they tend to be the same thing"

Contributing to HWN

To help create new editions of this newsletter, please see the contributing information. Send stories to dons at cse.unsw.edu.au . The darcs repository is available at darcs get http://www.cse.unsw.edu.au/~dons/code/hwn