Haskell Weekly News: April 27, 2007

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

The last week was a very exciting week for the Haskell community, with a new
GHC release, the first release of Xmonad, a window manager written in Haskell,
and DisTract, a new distributed bug tracker, written in Haskell. A number of new
Haskell jobs were announced, and several new user groups were formed!

Announcements

GHC 6.6.1. Ian Lynagh
announced
a new patchlevel release of GHC. This release contains a significant number
of bugfixes relative to 6.6, so we recommend upgrading. Release notes are here.
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.

Xmonad 0.1. Spencer Janssen
announced
the inaugural release of Xmonad. Xmonad is a
minimalist tiling window manager for X, written in Haskell. Windows are
managed using automatic layout algorithms, which can be dynamically
reconfigured. At any time windows are arranged so as to maximise the use of
screen real estate. All features of the window manager are accessible purely
from the keyboard: a mouse is entirely optional. Xmonad is configured in
Haskell, and custom layout algorithms may be implemented by the user in
config files.

DisTract: Distributed Bug Tracker implemented in Haskell. Matthew
Sackman
announced
DisTract, a Distributed Bug
Tracker. We're all now familiar with working with distributed software
control systems, such as Monotone, Git, Darcs, Mercurial and others, but bug
trackers still seem to be fully stuck in the centralised model: Bugzilla and
Trac both have single centralised servers. This is clearly wrong, as if
you're able to work on the Train, off the network and still perform local
commits of code then surely you should also be able to locally close bugs
too. DisTract allows you to manage bugs in a distributed manner through your
web-browser. The distribution is achieved by making use of a distributed
software control system, Monotone. Thus Monotone is used to move files across
the network, perform merging operations and track the development of every
bug. Finally, the glue in the middle that generates the HTML summaries and
modifies the bugs is written in Haskell.

IOSpec 0.1. Wouter Swierstra
announced
the first release of the Test.IOSpec library,
that provides a pure specification of some functions in the IO monad. This
may be of interest to anyone who wants to debug, reason about, analyse, or
test impure code. Essentially, by importing libraries from IOSpec you can the
same code you would normally write in the IO monad. Once you're satisfied
that your functions are reasonably well-behaved, you can remove the
Test.IOSpec import and replace it with the 'real' functions instead.

wl-pprint-1.0: Wadler/Leijen pretty printer. Stefan O'Rear
announced
wl-pprint-1.0, the classic Wadler / Leijen pretty printing combinators, now
in 100% easier to use Cabalised
form! PPrint is an implementation of the pretty printing combinators
described by Philip Wadler (1997). In their bare essence, the combinators of
Wadler are not expressive enough to describe some commonly occurring layouts.
The PPrint library adds new primitives to describe these layouts and works
well in practice.

London Haskell User Group. Neil Bartlett
announced
the first meeting of the London
Haskell User Group on Wednesday 23rd May from 6:30PM. The meeting will be
held at City University's main campus in central London, and Simon Peyton
Jones will be coming to give a talk.

New York Functional Programmers Network. Howard Mansell
announced
a New York area-based network for Haskell (and functional) programmers. The
idea is to have a regular meeting through which functional programmers can
meet to discuss experiences, get and give information, find jobs.

Data.Proposition 0.1. Neil Mitchell
announced
the release of Data.Proposition,
a library that handles propositions, logical formulae consisting of literals
without quantification. It automatically simplifies a proposition as it is
constructed using simple rules provided by the programmer. Implementations
of propositions in terms of an abstract syntax tree and as a Binary Decision
Diagram (BDD) are provided. A standard interface is provided for all
propositions.

Book reviews for the Journal of Functional Programming. Simon
Thompson
sought
interested contributors for book reivews for the Journal of Functional
Programming. There is a list of books currently
available for review.

Reminder: HCAR May 2007. Andres Loeh
reminded
us that the deadline for the May 2007 edition of the Haskell Communities and
Activities Report is only a few days away -- but this is still enough time to
make sure that the report contains a section on your project, on the
interesting stuff that you've been doing; using or affecting Haskell in some
way.

hpaste for emacs. David House
announced
hpaste.el, an Emacs Lisp library that integrates hpaste, the Haskell pastebin, into Emacs. It
provides two functions, hpaste-paste-region and hpaste-paste-buffer, which
send the region or buffer to the hpaste server as required.

Discussion

More inlining. Duncan Coutts
asked
about more fine grained control over inlining in GHC, to ease term rewriting
with RULES

Haskell version of Norvig's Python Spelling Corrector. Pete Kazmier
spawned
a long thread covering various implementations of spelling correctors in
Haskell

Jobs

Quantitative Functional Programmer. Credit Suisse.
The Global Modelling and Analytics
Group (GMAG) is responsible for producing state-of-the-art pricing,
trading and hedging models for Credit Suisse. These models are used across a
range of businesses in the Fixed Income and Equity Divisions. The groups
mandate covers all major asset classes including Credit Derivatives,
Commodities, Emerging Markets, Equity Derivatives and Convertibles, Exotics,
Foreign Exchange, Fund Linked Products, Interest Rate Products and Mortgage
Derivatives. GMAG operates globally with 85 members located in New York,
London, Hong Kong and Tokyo. We are currently building a Domain Specific
Language (embedded in Haskell) that will be used within GMAG. We require
intelligent, motivated people to develop and extend this language. These
individuals will also work with modellers to aid them in effectively applying
these new tools.

Haskell programmer positions. HAppS.
HAppS LLC has part-time
and full-time positions open for Haskell programmers to: improve the open
source Haskell codebase at HAppS.org; implement infrastructure to make it
work well in Amazon S3/EC2 environments; make http://pass.net reliable enough
to be used by live apps; build the mass market apps we want to run on top of
the HAppS/Pass.net platform. We are looking for people who: have substantial
experience programming Haskell; have experience building Internet apps (not
necessarily in Haskell but would be good), and live in any of these places:
the Internet, New York, San Francisco Los Angeles.

Vacancy for a PhD student. Johan Jeuring
announced
a vacancy for a PhD student in the Strategy Feedback project. Knowledge of
Haskell is a big plus; implementation of most of the tools will be done in
Haskell. Length: 1+3 years, Open University the Netherlands, Location:
Heerlen.

Quotes of the Week

apfelmus: Programming in Haskell is
like dual-wielding two light sabers whereas programming in imperative languages
is like being equipped with a blunt kitchen knife.

mwc: C++ is multiparadigm in the same way a dog with 4 table
legs nailed onto it is an octopus

ptolomy: Sometimes
Haskell feels like a personal trainer for proper program construction. You
half-ass something, and the compiler doesn't let you get away with it and
won't let you move on until you do it right.

dons: I wish
you success and may your lambdas always beta reduce

quicksilver: May your years be long and your type inference
algorithms sound.

inverselimit: So I tried as my first
project in Haskell to write something that decomposes modules of polynomials
using Schur-Weyl duality. This turned out to be a little tricky without
being comfortable with the syntax

jcreigh: Could not find
instance Ord for type ProgrammingLanguage

Code Watch

Apr 19 07:23:58 PDT 2007. Simon Marlow.
More
debugger improvements. :list shows the code around the current breakpoint.
Also it highlights the current expression in bold (the bold/unbold codes are
hardwired to the ANSI codes right now, I'll provide a way to change them later).
:set stop cmd' causes cmd to be run each time we stop at a breakpoint. In
particular, :set stop :list is particularly useful.

Wed Apr 25
03:18:32 PDT 2007. simonpj. Add
-fwarn-monomorphism-restriction (on by default) to warn when the MR is used.
Users often trip up on the Dreaded Monomorphism Restriction. This warning flag
tells you when the MR springs into action. Currently it's on by default, but we
could change that.