A double-plus episode this week, as last week's HWN went missing
during a furious hack fest.

Announcements

GHC 6.4.2. Simon Marlow
announced
the release of the Glasgow Haskell Compiler, version 6.4.2.
GHC is a state-of-the-art programming suite for Haskell. Included
is an optimising compiler generating good code for a variety of
platforms, together with an interactive system for convenient, quick
development. The distribution includes space and time profiling
facilities, a large collection of libraries, and support for various
language extensions, including concurrency, exceptions, and foreign
language interfaces (C, whatever). GHC is distributed under a
BSD-style open source license.

Communities and Activities Report. Andres Loeh
released
the call for contributions to the 10th (!) Haskell Communities and
Activities Report. If you are working on any project that is in some
way related to Haskell, write a short entry and submit it to Andres.

The Haskell Communities and Activities Report is a bi-annual
overview of the state of Haskell as well as Haskell-related projects
over the last, and possibly the upcoming 6 months. If you have only
recently been exposed to Haskell, it might be a good idea to browse the
November 2005 edition
-- you will find interesting topics described as well as several
starting points and links that may provide answers to many questions.

Google Summer of Code. Paolo Martini
announced
that Haskell.org would have a presence as an official mentoring
organisation for this year's Google Summer of Code. Several members
of the Haskell community have volunteered as mentors, and a large
number of proposals have been listed. If you're interested in
mentoring, suggesting projects, or applying as a student to spend
your summer writing Haskell code, check it out!

Debian from Scratch. John Goerzen
announced
Debian From Scratch (DFS), a single, full rescue linux CD capable of
working with all major filesystems, LVM, software RAID, and even
compiling a new kernel. The tool that generates the ISO images
(dfsbuild) is written in Haskell. The generated ISO images also
contain full, working GHC and Hugs environments.

Hazakura - search-based MUA. Jun Mukai
announced
the first release of hazakura, a search-based mail client, written
in Haskell.

Discussion

Global IORefs. Brian Hulley
forked
a long running thread on the use of top level mutable variables in
an application he's developing, leading to many contributions on how
to rewrite the code in a functional style.

cabal-get. Isaac Jones
released
a note discussing some changes to Cabal, including integration of
the cabal-get tool into the main branch.

Fast serialisation. Bulat Ziganshin
published
some result of a test of various serialization libraries speed,
comparing his AltBinary code against the standard Binary implementations,
with very encouraging results.

Gigabyte strings. Don Stewart
posted
the results of some experiments into using gigabyte strings (as
ByteStrings) in GHC, with good results.

Darcs corner

Darcs patcher. Nicholas FitzRoy-Dale
announced
Darcs patcher, a tool to take a darcs patch file in the and
applies it to the source tree in your current working directory.
It was written as a tool to keep Bazaar repositories in sync
with Darcs, with the Darcs repo being the master. Nicholas
writes that he finds darcs much easier to use and less prone to
failure.

Contributing to HWN

You can help us 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

Announcements

Halfs, a Haskell filesystem. Isaac Jones
announced
the first release of Halfs, a filesystem written
in Haskell. Halfs can be mounted and used like any other Linux filesystem,
or used as a library. Halfs is a fork (and a port) of the filesystem
developed by Galois Connections. In addition, Halfs comes with a virtual
machine to make using it extremely easy. You don't need an extra partition
or a thumb drive, or even Linux (Windows and Mac OS can emulate the virtual
machine). See more at
the Halfs site.

DrIFT-2.2.0. John Meacham
released
DrIFT-2.2.0, the type sensitive preprocessor for Haskell. It
extracts type declarations and directives from modules. The
directives cause rules to be fired on the parsed type declarations,
generating new code which is then appended to the bottom of the
input file. Read more
here.

MissingH 0.14.2. John Goerzen
announced
version 0.14.2 of MissingH, the library of "missing" Haskell code. Now including support for
shell globs, POSIX-style wildcards and more. Check
here for more details.

Index-aware linear algebra. Frederik Eaton
announced
an index-aware linear algebra library written in Haskell.
The library exposes index types and ranges so that static guarantees can be
made about the library operations (e.g. an attempt to add two incompatibly
sized matrices is a static error). Frederik's motivation is that a good
linear algebra library which embeds knowledge of the mathematical
structures in the type system, such that misuse is a static error, could
mean Haskell makes valuable contribution in the area of technical
computing, currently dominated by interpreted, weakly typed languages.

Discussion

QuickCheck. Koen Claessen
hinted
that a "brand new" version of QuickCheck with lots of cool features
is soon to be released.

Accurate event scheduling. Henning Thielemann
asked
about how to improve the accuracy of event scheduling, while working on
Haskore, the Haskell music system. John Meacham suggested a binding to the Linux
real time clock interface, while Tomasz Zielonka pointed to a library he has
been developing using software transactional memory actions for accurate timeouts.
He also mentioned the new registerDelay function in the GHC head.
Measurements indicated that the average error from the expected waiting
time dropped from 0.010140108245s to 0.00080999391s. Quite good results.

Good fusion.
A casual remar
k
about an alternative version of the inits function lead to a
huge discussion about using fusion to improve code quality.

Code watch

Sun Apr 2 14:59:11 PDT 2006 simonpj
Improve newtype deriving

Ross Paterson pointed out a useful generalisation of GHC's newtype-deriving
mechanism. This implements it. The idea is to allow
newtype Wrap m a = Wrap (m a) deriving (Monad, Eq)
where the representation type doesn't start with a type constructor.

Up to now, the silent unwrapping of newtypes in foreign import/export has
been limited to data values. But it's useful for the IO monad itself:

newtype MyIO a = MIO (IO a)
foreign import foo :: Int -> MyIO Int

This patch allows the IO monad to be wrapped too.

Contributing to HWN

You can help us 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

Announcements

hImerge: a graphical user interface for emerge. Luis Araujo
released
hImerge,
a graphical user interface for emerge, (Gentoo's Portage system)
written in Haskell using gtk2hs.
Here's a jpg.
The main idea is to simplify browsing the entire portage tree as well as of
running the most basic and common options from the emerge command. hImerge
also offers several handy tools, like global and local use flags browsers,
and a minimal web browser.

MissingH 0.14.0. John Goerzen
announced
MissingH 0.14.0, a library of "missing" functions.
MissingH is available
here.

Thu Apr 6 19:05:11 PDT 2006 Simon Marlow
* Reorganisation of the source tree
Most of the other users of the fptools build system have migrated to
Cabal, and with the move to darcs we can now flatten the source tree
without losing history, so here goes.
The main change is that the ghc/ subdir is gone, and most of what it
contained is now at the top level. The build system now makes no
pretense at being multi-project, it is just the GHC build system.

Quotes of the Week

JaffaCake :: gcc is getting smarter, so we need to hit it with a bigger stick
ihope :: Oops, I forgot that Djinn doesn't do GADT's.
malig :: quantum mechanics actually strikes me as less weird than lazy
evaluation sometimes. at least it disallows time travel

Contributing to HWN

Thanks to Luis Araujo for help preparing this issue.

You can help us 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

Discussion

GHCi as a debugger. Lemmih
wrote
on "whether it would be possible to call GHCi from interpreted
byte-code. It turned out that it was, and it was even fairly
easy". Great stuff!

Clearer reflection. Krasimir Angelov
proposed
some ideas for a better Reflection API for Haskell. Currently we
have Typeable and Data classes which provide some pieces of
information about the data types at runtime. typeOf provides
runtime information about the type of a given variable.
dataTypeOf provides almost the same information but with some
extras. There is some overlap between the TypeRep and DataType
types. Some pieces of information you can get from the TypeRep,
other from the DataType and some other from both of them. There
is also an information which is inaccessible from either TypeRep
and DataType.

Quotes of the Week

Seen on #haskell:

Lemmih:: calling an out-of-scope function isn't as easy as I had hoped
TuringTest:: They got it work in Haskell without understanding Haskell.
It is quite an achievement, of some description.
tennin:: [very #haskell] anyone know of any good books/papers on the
application of category theory to databases?
Smokey`:: I can't believe it, Haskell is starting to draw me away from
C++... I swore i'd never turn from C++

Contributing to HWN

You can help us 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

Haskell Weekly News: March 27, 2006

Greetings, and thanks for reading issue 30 of HWN, a
weekly newsletter covering developments in the Haskell community. Each
Monday, new editions are posted to
the Haskell mailing list
and to
The Haskell Sequence.
RSS is
also available.

A busy, exciting week!

Announcements

monadLib 2.0. Iavor Diatchki
announced the release of monadLib 2.0 -- library of
monad transformers for Haskell. 'monadLib' is a descendent of
'mtl', the monad template library that is distributed with most
Haskell implementations. Check out the library web page.

Text.Regex.Lazy (0.33). Chris Kuklewicz
announced the release of Text.Regex.Lazy.
This is an alternative to Text.Regex along with some enhancements.
GHC's Text.Regex marshals the data back and forth to C arrays, to call
libc. This is far too slow (and strict). This module understands
regular expression Strings via a Parsec parser and creates an internal data
structure (Text.Regex.Lazy.Pattern). This is then transformed into a
Parsec parser to process the input String, or into a DFA table for matching
against the input String or FastPackedString. The input string is
consumed lazily, so it may be an arbitrarily long or infinite source.

HDBC 0.99.2. John Goerzen
released
HDBC 0.99.2, along with 0.99.2 versions of all database
backends. John says "If things go well, after a few weeks of
testing, this version will become HDBC 1.0.0". HDBC is a
multi-database interface system for Haskell.

Planet Haskell. Isaac Jones
asked if someone could volunteer to set up "Planet
Haskell", an RSS feed aggregator in the style of Planet Debian, Planet
Gnome or Planet Perl. Happily, Antti-Juhani Kaijanaho stepped up, and now
Planet Haskell is live at http://planet.haskell.org. Antti-Juhani asks that any Haskell
people with blogs submit their feed urls to him, so check it out!

Haskell on Gentoo Linux Duncan Coutts writes that GHC 6.4.1 has been marked stable on x86,
amd64, sparc and ppc, for
Gentoo Linux. (We also support ppc64, alpha and hppa.)
Gentoo also has a collection of over 30 Haskell libraries and tools.
There is also a #gentoo-haskell irc channel on freenode.

Concurrent Yhc. The Yhc dev team
reports that Yhc now includes support for concurrency!
The interface is the same as Concurrent GHC. Currently only

Control.Concurrent

Control.Concurrent.MVar

Control.Concurrent.QSem

are implemented, however many other abstractions can be written in
Haskell in terms of MVars.

GHC 6.4.2 Release Candidates
Simon Marlow announced that GHC was moving into release-candidate mode for
version 6.4.2. Grab a snapshot and try it out. The available builds are: x86_64-unknown-linux (Fedora
Core 5), i386-unknown-linux (glibc 2.3 era), and Windows
(i386-unknown-mingw32). Barring any serious hiccups, the release should
be out in a couple of weeks.

HaRe 0.3.
Sneaking out without us noticing, in January, a new snapshot of HaRe, the Haskell refactoring tool, was released.
This snapshot of HaRe 0.3 is now compatible with the latest GHC and
Programmatica. New refactorings have also been added.

Discussion

Disruptive Haskell. Paul Johnson forked a long discussion on how Haskell can be seen as a
disruptive technology, and what Haskell's "brand" might be. Many
interesting contributions were made.

Bit streaming Haskell. Per Gustafsson, having made a proposal
to extend the Erlang `binary' data type from being a sequence of bytes
(a byte stream) to being a sequence of bits (a bitstream), with the
ability to do pattern matching at the bit level, asked
for help writing efficient (and beautiful) Haskell versions of his
bitstream benchmarks.
Several improved programs were submitted, bringing the Haskell code
into line with the OCaml and Erlang entries.

shapr :: Science News had an article about a tribe of isolated villagers
in Brazil that don't have recursion or indirection in their language.

Contributing to HWN

You can help us 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

Haskell Weekly News: March 20, 2006

Greetings, and thanks for reading issue 29 of HWN, a
weekly newsletter covering developments in the Haskell community. Each
Monday, new editions are posted to
the Haskell mailing list
and to
The Haskell Sequence.
RSS is
also available.

Announcements

lhs2TeX version 1.11. Andres Loeh
announced
lhs2TeX version 1.11, a preprocessor to generate LaTeX code from
literate Haskell sources.

lhs2TeX includes the following features:

Highly customized output.

Liberal parser -- no restriction to Haskell 98.

Generate multiple versions of a program or document from a single source.

Active documents: call Haskell to generate parts of the
document (useful for papers on Haskell).

Discussion

GHC 6.4.2. Simon Marlow put out
a heads up for the forthcoming 6.4.2 release of GHC. The rough
timescale is to go into release candidate testing in about a
week, and have two weeks of release candidates before the final release.

Hexdump.
Dominic Steinitz mentioned
a "hexdump" function he'd written, posing a question about where it would
live in the module hierarchy..

Quote of the Week

ihope :: My factorial function uses GADTs.

Contributing to HWN

You can help us 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

Haskell Weekly News: March 13, 2006

Greetings, and thanks for reading issue 28 of HWN, a
weekly newsletter covering developments in the Haskell community. Each
Monday, new editions are posted to
the Haskell mailing list
and to
The Haskell Sequence.
RSS is
also available.

Announcements

Alternative to Text.Regex. Chris Kuklewicz
announced an alternative to Text.Regex. While working on the
language shootout, Chris implemented a new efficient regex engine, using
parsec. It contructs a parser from a string representation of a regular
expression.

Contributing to HWN

You can help us 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

Haskell Weekly News: March 06, 2006

Greetings, and thanks for reading issue 27 of HWN, a
weekly newsletter covering developments in the Haskell community. Each
Monday, new editions are posted to
the Haskell mailing list
and to
The Haskell Sequence.
RSS is
also available.

Announcements

Haskell as a markup language. Oleg Kiselyov
writes on using Haskell to represent semi-structured
documents and the rules of their processing. SXML is embedded
directly in Haskell, with an open and extensible set of `tags'.
The benefit of this is of course in static type guarantees, such
as prohibiting an H1 element to appear in the character content
of other elements.

hmp3 1.0. Don Stewart released hmp3 version 1. hmp3 is a curses-based mp3
player written in Haskell, designed to be fast, small and stable.

Edison 1.2rc2. Robert Dockins announced
the second release candidate for Edison 1.2 is now ready for comments.

Code Watch

Make -split-objs work with --make.

Thu Mar 2 09:05:05 PST 2006 Simon Marlow
* Make -split-objs work with --make
This turned out to be a lot easier than I thought. Just moving a few
bits of -split-objs support from the build system into the compiler
was enough. The only thing that Cabal needs to do in order to support
-split-objs now is to pass the names of the split objects rather than
the monolithic ones to 'ar'.

Quotes of the Week

[Lemmih's Law]
Lemmih :: Every 18 months, compilers will make their warnings and error messages twice as cryptic

Claus Reinke :: The point about overlapping instances is that they shouldn't.

Contributing to HWN

You can help us 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

Haskell Weekly News: February 27, 2006

Greetings, and thanks for reading issue 26 of HWN, a
weekly newsletter covering developments in the Haskell community. Each
Monday, new editions are posted to
the Haskell mailing list
and to
The Haskell Sequence.
RSS is
also available.

A fairly quiet week this week.

Announcements

Long Live Edison. Robert Dockins announced
he had revived the Edison data structure code, and is maintaining a
darcs repository, with a view to modernising the codebase.

Haskell'

Darcs Corner

darcsweb 0.15-rc1. Alberto Bertogli announced that a new version of darcsweb is available.

Contributing to HWN

You can help us 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

Haskell Weekly News: February 20, 2006

Greetings, and thanks for reading issue 25 of HWN, a
weekly newsletter covering developments in the Haskell community. Each
Monday, new editions are posted to
the Haskell mailing list
and to
The Haskell Sequence.
RSS is
also available.

Announcements

The Haskell Workshop. Andres Loeh released the initial call for papers for the ACM SIGPLAN 2006
Haskell Workshop, to be held at Portland, Oregon on the 17 September,
2006.

The purpose of the Haskell Workshop is to discuss experience with Haskell, and possible
future developments for the language. The scope of the workshop includes
all aspects of the design, semantics, theory, application, implementation,
and teaching of Haskell.

Probability Distributions.
Matthias Fischmann released
a module for sampling arbitrary probability distribution, so far including
normal (gaussian) and uniform distributions.

Haskell'

Status Report. Isaac Jones released a Haskell' status report. There is a list of proposals and a
"strawman" categorization of them on
the wiki.
The timeline is also on the wiki. You'll notice
that it's very aggressive; we plan to announce something at the next
Haskell Workshop in September. So, check out the wiki and get on the
haskell-prime mailing list!

Discussion

Commerical Use of Haskell. Seth Kurtzberg mentioned on
the #haskell irc channel that he was in the process of deploying a
commercial application written in Haskell onto a production line in
Taiwan. The particular application stress tests hardware performance
and stability.

Seth writes:

Once the compiler finally does what I think I'm telling it,
the programs almost always work the first time, which is really
amazing. With any substantial effort in C or C++, you are going
to have hidden problems traceable to type errors.

Recently, the thing that I was most pleased with was how quickly I was
able to refactor the hardware stress testing code into network
performance testing code.

RFC: Class-based collections. Jean-Philippe Bernardy
released
an rfc for his initial work on a class-based
collections framework. The main goal is to have something
usable right now, making use of generally available haskell
extensions for maximum usability/portability ratio (or rather
product).

Darcs Corner

darcs 1.0.6. Tommy Pettersson
announced that the initial release candidate for Darcs 1.0.6 is
available. It contains important bug fixes, some noticeable changes, and,
of course, new features.

Contributing to HWN

You can help us 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