---------------------------------------------------------------------------
Haskell Weekly News
http://sequence.complete.org/
Issue 53 - 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.
Announcements
Visual Haskell 0.2. Krasimir Angelov [1]announced the final version of
[2]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.
1. http://article.gmane.org/gmane.comp.lang.haskell.general/14608
2. http://www.haskell.org/visualhaskell
Phooey: functional user interfaces for Haskell. Conal Elliott
[3]announced Phooey, [4]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
[5]available via darcs.
3. http://article.gmane.org/gmane.comp.lang.haskell.general/14635
4. http://darcs.haskell.org/packages/phooey/doc
5. http://darcs.haskell.org/packages/phooey
HOgg 0.2.0. Conrad Parker [6]announced HOgg 0.2.0. The [7]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 [8]oggz* tools, although hogg does not yet provide an
equivalent to oggz-validate. HOgg supports chained and multiplexed Ogg
bitstreams conformant with [9]RFC3533. HOgg can parse headers for
CMML, FLAC, OggPCM, Speex, Theora and Vorbis media codecs, and can
read and write Ogg Skeleton bitstreams.
6. http://article.gmane.org/gmane.comp.lang.haskell.cafe/17102
7. http://snapper.kfish.org/~conrad/software/hogg/
8. http://www.annodex.net/software/liboggz/index.html
9. http://www.ietf.org/rfc/rfc3533.txt
10. http://article.gmane.org/gmane.comp.lang.haskell.general/14610
ftphs. John Goerzen [10]announced ftphs, [11]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.
11. http://software.complete.org/ftphs
AnyDBM 1.0.0. John Goerzen [12]announced AnyDBM, a generic DBM-type
interface. [13]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.
12. http://article.gmane.org/gmane.comp.lang.haskell.general/14613
13. http://software.complete.org/anydbm
ConfigFile 1.0.0. John Goerzen [14]announced ConfigFile, a parser and
writer for handling sectioned config files in Haskell. The
[15]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.
14. http://article.gmane.org/gmane.comp.lang.haskell.general/14612
15. http://software.complete.org/configfile
hslogger. John Goerzen [16]announced hslogger, a logging framework for
Haskell. [17]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.
16. http://article.gmane.org/gmane.comp.lang.haskell.general/14611
17. http://software.complete.org/hslogger
MissingH 0.18.0. John Goerzen [18]announced MissingH 0.18.0.
[19]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.
18. http://article.gmane.org/gmane.comp.lang.haskell.general/14614
19. http://software.complete.org/missingh
ZMachine 0.0. Samuel Bronson [20]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.
20. http://article.gmane.org/gmane.comp.lang.haskell.glasgow.user/11397
Halp: Haskell Logic Prover. Dan Mead [21]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 [22]darcs repository.
21. http://article.gmane.org/gmane.comp.lang.haskell.cafe/17104/
22. http://taz.cs.wcupa.edu/~dmead/code/halp/
DList 0.1. Don Stewart [23]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.
23. http://article.gmane.org/gmane.comp.lang.haskell.general/14623
Haskell'
This section covers the [24]Haskell' standardisation process.
* [25]Infix multiparameter type classes
* [26]Type sections
* [27]Are pattern guards obsolete?
24. http://hackage.haskell.org/trac/haskell-prime
25. http://thread.gmane.org/gmane.comp.lang.haskell.prime/1948/focus=1948
26. http://thread.gmane.org/gmane.comp.lang.haskell.prime/1955/focus=1955
27. http://thread.gmane.org/gmane.comp.lang.haskell.prime/1956/focus=1956
Discussion
Ninety Nine Haskell Problems. Andrew Wagner [28]mentioned that 99 Lisp
exercises have been [29]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!
28. http://article.gmane.org/gmane.comp.lang.haskell.cafe/17324
29. http://haskell.org/haskellwiki/99_Haskell_exercises
MissingH status. John Goerzen [30]announced that MissingH now has
[31]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 [32]available.
30. http://article.gmane.org/gmane.comp.lang.haskell.cafe/17156
31. http://software.complete.org/missingh
32. http://software.complete.org/missingh/wiki/TransitionPlanning
Reversing a string of words: C# v Perl v Ruby v Haskell. Andrew Savige
[33]invoked the Haskell cafe magicians with a comparison of string
processing support across languages.
33. http://thread.gmane.org/gmane.comp.lang.haskell.cafe/17197/focus=17197
Unlifted type variables in GHC. Brian Alliet [34]asked about the
intricacies of supporting type variables with an unlifted kind.
34. http://thread.gmane.org/gmane.comp.lang.haskell.glasgow.user/11397/focus=11397
Wanted: libraries. Don Stewart [35]asked for information about missing
or substandard libraries to be documented on the wiki.
35. http://thread.gmane.org/gmane.comp.lang.haskell.cafe/17222/focus=17222
Haskell for Dummies. Kirsten Chevalier [36]launched an interesting
discussion to produce a new 'Practical Haskell' or 'Haskell for
Dummies' textbook.
36. http://thread.gmane.org/gmane.comp.lang.haskell.cafe/17240/focus=17240
Stratified monads. Mark Carroll [37]asked about experience with
Espinosa's stratified monads in Haskell.
37. http://thread.gmane.org/gmane.comp.lang.haskell.cafe/17266/focus=17266
Conference roundup
hal: Haskell in Leipzig. [38]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. [39]Summaries of the talks are available.
38. http://iba-cg.de/haskell.html
39. http://iba-cg.de/haskell.html
The Haskell Hackathon. The Hac organisers [40]announced that extended
registration for Hac 07, the Haskell libraries and infrastructure
hackathon is open, via the [41]Hac website.
40. http://article.gmane.org/gmane.comp.lang.haskell.cafe/17132
41. http://haskell.org/haskellwiki/Hac_20007
Blog noise
[42]Haskell news from the blogosphere.
* [43]A Tree Grows Up in Haskell: Building a Dictionary Type
* [44]Functional programming is a silver bullet
* [45]Silver Bullets Incoming!
* [46]The Division Bell Tolls for Me, Part One
* [47]The Division Bell Tolls for Me, Part Two
* [48]The Division Bell Tolls for Me, Part Three
* [49]The Division Bell Tolls for Me, Part Four (Conclusion)
* [50]The Divisive Aftermath
* [51]Non-standard analysis, automatic differentiation, Haskell, and
other stories
* [52]Adventures in Haskell: parsing the game world
* [53]Generalised Haskell
* [54]Haskell tool tips
* [55]Reconsidering my approach to learning Haskell
* [56]A Sermon on Programming Languages
* [57]Polyglot Programming
* [58]Fibonacci series one-liner in Haskell
* [59]An infinite list in Java
* [60]The beauty of Haskell
* [61]On Unit Testing and Type Safety
* [62]Rewriting PLEAC Haskell?
* [63]A newbie in Haskell land : The (->) monad
* [64]Quick interpreters with the Reader monad
* [65]bhc: Basic Haskell Compiler
* [66]The lambda revolution: how you can help
42. http://planet.haskell.org/
43. http://scienceblogs.com/goodmath/2006/12/a_tree_grows_up_in_haskell_bui_1.php
44. http://cogito.blogthing.com/2006/12/06/no-silver-bullet-and-functional-programming/
45. http://cogito.blogthing.com/2006/12/08/silverbulletsincoming/
46. http://praisecurseandrecurse.blogspot.com/2006/12/division-bell-tolls-for-me.html
47. http://praisecurseandrecurse.blogspot.com/2006/12/division-bell-tolls-for-me-part-two.html
48. http://praisecurseandrecurse.blogspot.com/2006/12/division-bell-tolls-for-me-part-three.html
49. http://praisecurseandrecurse.blogspot.com/2006/12/division-bell-tolls-for-me-part-four.html
50. http://praisecurseandrecurse.blogspot.com/2006/12/divisive-aftermath.html
51. http://vandreev.wordpress.com/2006/12/04/non-standard-analysis-and-automatic-differentiation/
52. http://jpmoresmau.blogspot.com/2006/12/adventures-in-haskell-parsing-game.html
53. http://neilmitchell.blogspot.com/2006/12/generalised-haskell.html
54. http://monad.carnalreason.org/wordpress/?p=21
55. http://monad.carnalreason.org/wordpress/?p=20
56. http://www.dailyspeculations.com/
57. http://memeagora.blogspot.com/2006/12/polyglot-programming.html
58. http://gimbo.org.uk/archives/2006/12/#001887
59. http://jpmoresmau.blogspot.com/2006/12/in-haskell-you-can-define-infinite.html
60. http://clemens.endorphin.org/weblog/archives/2006-06.shtml#e2006-06-23T09_16_52.txt
61. http://blogs.teamb.com/craigstuntz/archive/2006/12/08/UnitTestingAndTypeSafety.aspx
62. http://koweycode.blogspot.com/2006/12/rewriting-pleac-haskell.html
63. http://www.alpheccar.org/en/posts/show/61
64. http://cgi.cse.unsw.edu.au/~dons/blog/2006/12/11#interpreters-with-reader-monads
65. http://neilmitchell.blogspot.com/2006/12/bhc-basic-haskell-compiler.html
66. http://www.cse.unsw.edu.au/~dons/blog/2006/12/11#release-a-library-today
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.
Code Watch
Tue Dec 5 23:18:45 PST 2006. Simon Peyton Jones. [67]Improve
dependency analysis makes more dictionaries inlinable.
67. http://article.gmane.org/gmane.comp.lang.haskell.cvs.ghc/18123
Sat Dec 9 09:42:03 PST 2006. Ian Lynagh. [68]Add PowerPC to the list
of SMP arches
68. http://article.gmane.org/gmane.comp.lang.haskell.cvs.ghc/18173
Mon Dec 11 14:25:34 PST 2006. Wolfgang Thaller. [69]Support
MO_WriteBarrier in PowerPC NCG (lwsync instruction).
69. http://article.gmane.org/gmane.comp.lang.haskell.cvs.ghc/18217
About the Haskell Weekly News
Each week, new editions are posted to [70]the Haskell mailing list as
well as to [71]the Haskell Sequence and [72]Planet Haskell. [73]RSS is
also available, and headlines appear on [74]haskell.org. Headlines are
available as [75]PDF. The Haskell Weekly News is also [76]available in
Spanish translation.
To help create new editions of this newsletter, please see the
[77]contributing information. Send stories to dons at cse.unsw.edu.au.
The darcs repository is available at darcs get
[78]http://www.cse.unsw.edu.au/~dons/code/hwn
70. http://www.haskell.org/mailman/listinfo/haskell
71. http://sequence.complete.org/
72. http://planet.haskell.org/
73. http://sequence.complete.org/node/feed
74. http://haskell.org/
75. http://www.cse.unsw.edu.au/~dons/code/hwn/archives/20061212.pdf
76. http://haskell.org/haskellwiki/HWN/es
77. http://haskell.org/haskellwiki/HWN
78. http://www.cse.unsw.edu.au/~dons/code/hwn