Haskell Weekly News: December 12, 2006
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.
Haskell'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.
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.
Blog noiseHaskell news from the blogosphere.
- A Tree Grows Up in Haskell: Building a Dictionary Type
- Functional programming is a silver bullet
- Silver Bullets Incoming!
- The Division Bell Tolls for Me, Part One
- The Division Bell Tolls for Me, Part Two
- The Division Bell Tolls for Me, Part Three
- The Division Bell Tolls for Me, Part Four (Conclusion)
- The Divisive Aftermath
- Non-standard analysis, automatic differentiation, Haskell, and other stories
- Adventures in Haskell: parsing the game world
- Generalised Haskell
- Haskell tool tips
- Reconsidering my approach to learning Haskell
- A Sermon on Programming Languages
- Polyglot Programming
- Fibonacci series one-liner in Haskell
- An infinite list in Java
- The beauty of Haskell
- On Unit Testing and Type Safety
- Rewriting PLEAC Haskell?
- A newbie in Haskell land : The (->) monad
- Quick interpreters with the Reader monad
- bhc: Basic Haskell Compiler
- The lambda revolution: how you can help
Quotes of the Week
- Jim Apple: The Haskell list probably has the widest 'knowledge bandwidth' of any mailing list I've ever seen, from total beginner questions to highly abstruse stuff which probably represents the cutting edge of PhD research. All are answered with detail and good humour.
- [Seen on the Haskell mailing list]: Wow! I found your help terrific! Thank you! Can I give you some money?
- Paul Johnson: Is functional programming an actual bona-fide silver bullet as defined by Brooks? I believe it is. Functional programming is based on a sound theory of scalable software engineering, and the empirical evidence clearly and consistently supports the theory.
- Clemens Fruhwirth: After all the elegance I have to conclude that Haskell definitely deserves to be looked at.
- sorear: Haskell is amazing. I'm still working on my infinite-types unifier, and in a day I've added sums, products, and lambda abstractions, refactored the code until there was a net *decrease* in LOC, and helped man #haskell all at the same time. This'd take me a week in C, no doubt.
- Claus Reinke: The aim of update programming is to transform a store whose contents describe a problem into a store whose contents describe a solution. The aim of functional programming is to transform a program which describes a problem into a program which describes a solution.
- Daveman: What if I don't want to obey the laws? Do they throw me in jail with the other bad monads?
- Stinger: Sometimes Haskell seems like an arms race between weird mathematical constructs and my brain
- astrolabe: Below a certain level of competence, coding is a destructive act. Like playing the violin.
- dons: Gimme some lambda warez!
- wy: [wy] lennart: Wow. You won the IOCCC three times! [augustss] I'm bad at C programming ;)
- shapr: I think the Haskell approach works fine. That is, stick with research and do the best you can. Then after fifteen years of gestation, take over the world.
- edwinb: Where does 'Oleg cornered me in a pub and explained delimited continuations to me' fit in?
- emu: Design patterns are what you choose for wallpaper and carpets
- kyevan: My skull is already mostly duct tape. And I'm only on page 25 of YAHT!
- shapr: There's an important niche market for OSes that don't crash.
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