Welcome to issue 53 of HWN, a weekly newsletter covering developments in the Haskell community.

Lots of new, practical Haskell libraries released this week, including support for ogg sound file parsing, a new user interface library, ftp clients and servers, database bindings as well as config files and logging.


Visual Haskell 0.2. Krasimir Angelov announced the final version of Visual Haskell 0.2 is available! This is the first version that is: available for both VStudio 2003 and VStudio 2005; distributed with a stable GHC version (6.6). Additionally the plugin itself is much more stable than its first 0.0 version.

Phooey: functional user interfaces for Haskell. Conal Elliott announced Phooey, a functional UI library for Haskell. GUIs are usually programmed in an 'unnatural' style, in that implementation dependencies are inverted, relative to logical dependencies. This reversal results directly from the imperative orientation of most GUI libraries. While outputs depend on inputs from a user and semantic point of view, the imperative approach imposes an implementation dependence of inputs on outputs. Phooey ('Phunctional ooser ynterfaces') retains the functional style, in which outputs are expressed in terms of inputs. In addition, Phooey supports dynamic input bounds, flexible layout, and mutually-referential widgets. It is available via darcs.

HOgg 0.2.0. Conrad Parker announced HOgg 0.2.0. The HOgg package provides a commandline tool for manipulating Ogg files, and a corresponding Haskell library. This is the initial public release. The focus is on correctness of Ogg parsing and production. The capabilities of the hogg commandline tool are roughly on par with those of the oggz* tools, although hogg does not yet provide an equivalent to oggz-validate. HOgg supports chained and multiplexed Ogg bitstreams conformant with RFC3533. HOgg can parse headers for CMML, FLAC, OggPCM, Speex, Theora and Vorbis media codecs, and can read and write Ogg Skeleton bitstreams.

ftphs. John Goerzen announced ftphs, an FTP client and server library for Haskell. Its features include: easy to use operation; full support of text and binary transfers; optional lazy interaction; server can serve up a real or a virtual filesystem tree; Standards compliant. ftphs was previously a part of the MissingH library. The code in this release is unchanged from its state in MissingH, other than the changes necessary to make it a standalone package.

AnyDBM 1.0.0. John Goerzen announced AnyDBM, a generic DBM-type interface. AnyDBM provides a generic infrastructure for supporting storage of hash-like items with String-to-String mappings. It can be used for in-memory or on-disk storage. Two simple backend drivers are included with this package: one that is RAM-only, and one that is persistent and disk-backed. The hdbc-anydbm package provides another driver, which lets you use simple tables in any SQL database to provide a DBM-like interface. MissingPy also provides a Python driver which lets you use any Python anydbm driver under Haskell AnyDBM.

ConfigFile 1.0.0. John Goerzen announced ConfigFile, a parser and writer for handling sectioned config files in Haskell. The ConfigFile module works with configuration files in a standard format that is easy for the user to edit, easy for the programmer to work with, yet remains powerful and flexible. It is inspired by, and compatible with, Python's ConfigParser module. It uses files that resemble Windows .INI-style files, but with numerous improvements.

hslogger. John Goerzen announced hslogger, a logging framework for Haskell. hslogger's features include: each log message has a priority and a source associated with it; multiple log writers can be on the system; configurable global actions based on priority and source; extensible log writers (handlers); default handlers that write to the console, file handles, or syslog; easy to use operation. hslogger is the first package to be split off from the MissingH source.

MissingH 0.18.0. John Goerzen announced MissingH 0.18.0. MissingH is a large collection of assorted utility libraries for Haskell. Its primary audience is Haskell programmers that want to get practical things done fast. This release implements the first part of the MissingH transition. The major changes are: most code from other sources that had been merged into MissingH has been split off; stable, mostly standalone components of MissingH have been split off: hslogger, ftphs, ConfigFile, AnyDBM, and all modules renamed to more closely follow current Haskell naming practices.

ZMachine 0.0. Samuel Bronson announced a (partial) Z-machine interpreter in Haskell. It uses gtk2hs for the interface, though other interfaces could be implemented without actually changing the interpreter proper. The Z-machine is a virtual machine that was developed by Joel Berez and Marc Blank in 1979 and used by Infocom for its text adventure games.

Halp: Haskell Logic Prover. Dan Mead announced the release of Halp, the simple logic prover. Right now it only supports simple first order logic but predicates are on the way. Theres also a simple gui written in Java 5 which is in the darcs repository.

DList 0.1. Don Stewart announced dlist 0.1, a library for difference lists in Haskell. Difference lists are a Haskell idiom for implementing O(1) append on lists, using functions to represent the lists.


This section covers the Haskell' standardisation process.


Ninety Nine Haskell Problems. Andrew Wagner mentioned that 99 Lisp exercises have been ported to Haskell. Solving these exercises is a great way for relatively new haskell programmers to contribute something, since most of the problems are relatively simple. So have at them! All you need to do is write a canonical Haskell solution, and add it to the wiki. Please follow the instructions for 'reserving' a problem so we're not all duplicating each others' work. We should be able to knock these problems out in a matter of hours!

MissingH status. John Goerzen announced that MissingH now has a new Trac-based homepage, complete with wiki, Darcs repository information, source browser, bug tracker, and the various pieces of MissingH have been split off already into separate packages. The full list of changes is available.

Reversing a string of words: C# v Perl v Ruby v Haskell. Andrew Savige invoked the Haskell cafe magicians with a comparison of string processing support across languages.

Unlifted type variables in GHC. Brian Alliet asked about the intricacies of supporting type variables with an unlifted kind.

Wanted: libraries. Don Stewart asked for information about missing or substandard libraries to be documented on the wiki.

Haskell for Dummies. Kirsten Chevalier launched an interesting discussion to produce a new 'Practical Haskell' or 'Haskell for Dummies' textbook.

Stratified monads. Mark Carroll asked about experience with Espinosa's stratified monads in Haskell.

Conference roundup

hal: Haskell in Leipzig. More than 25 Haskellers from all over Germany gathered in Leipzig for the first HaL, Haskell in Leipzig, meeting. The range of different backgrounds was broad and spanned both the academic and the business worlds, encompassing seasoned Haskell programmers as well as beginners. There were five talks and two discussion sessions, and a functional breakfast. One of the discussion sessions had IDE support (in particular, in Eclipse) as its topic, the other focused on the possibilities for promoting Haskell in the software industry. The talk topics ranged from the use of Haskell in web technology and in climate research, to specifics of programming (MonadFix, coding guidelines). A very Haskell-like language (CAL Quark) that offers access to Java libraries and can be compiled to JVM bytecode was also introduced. A second 'Haskell in Leipzig' meeting is planned for early spring 2007. Summaries of the talks are available.

The Haskell Hackathon. The Hac organisers announced that extended registration for Hac 07, the Haskell libraries and infrastructure hackathon is open, via the Hac website.

Blog noise

Haskell news from the blogosphere.

Quotes of the Week

Code Watch

Tue Dec 5 23:18:45 PST 2006. Simon Peyton Jones. Improve dependency analysis makes more dictionaries inlinable.

Sat Dec 9 09:42:03 PST 2006. Ian Lynagh. Add PowerPC to the list of SMP arches

Mon Dec 11 14:25:34 PST 2006. Wolfgang Thaller. Support MO_WriteBarrier in PowerPC NCG (lwsync instruction).

About the Haskell Weekly News

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. Headlines are available as PDF. The Haskell Weekly News is also available in Spanish translation.

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