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

This issue marks the second anniversary of the Haskell (not quite) Weekly News. Thanks to the Haskell community for support, content and for reading over the last two years!

*OSCON Haskell
Tutorial*. Simon Peyton-Jones
Appeared at the O'Reilly Open Source Convention (OSCON) in Portland,
delivering a range of talks, including A Taste
of Haskell, A
Keynote on Functional Languages, Nested
Data Parallelism and Transactional
Memory for Concurrent Programming. Videos are available for most of these
talks: A Taste of Haskell: Part 1,
A Taste of Haskell: Part 2, slides
for A Taste of Haskell, Transactional Memory for Concurrent
Programming and the NDP
talk at the London Hugs meeting.

*hpodder 1.0*. John Goerzen
announced
version 1.0.0 of hpodder, the command-line podcatcher (podcast downloader)
that just happens to be written in everyone's favorite language. You can get
it here. Version 1.0.0
sports a new mechanism for detecting and disabling feeds or episodes that
repeatedly result in errors, updates to the Sqlite database schema, and
several bugfixes.

*encoding-0.1*. Henning Günther
announced
the release of 'encoding', a Haskell library to cope with many character
encodings found on modern computers. At the moment it supports (much more is
planned): ASCII, UTF-8, -16, -32, ISO 8859-* (alias latin-*), CP125* (windows
codepages), KOI8-R, Bootstring (base for punycode)

*Dimensional 0.6: Statically checked physical dimensions*. Björn
Buckwalter
announced
a library providing data types for performing arithmetic with physical
quantities and units. Information about the physical dimensions of the
quantities/units is embedded in their types and the validity of operations is
verified by the type checker at compile time. The boxing and unboxing of
numerical values as quantities is done by multiplication and division with
units.

*hgal-1.0.1*. Jean Philippe Bernardy. Computation automorphism group and canonical labeling of a graph*hpodder-1.0.3*. John Goerzen. Podcast Aggregator (downloader)*dlist-0.3.1*. Don Stewart. Differences lists: a list-like type supporting O(1) append*pointfree-1.0*. Felix Martini. Stand-alone command-line version of the point-less plugin for lambdabot*encoding-0.1*. Henning Guenther. A library for various character encodings*AppleScript-0.1.3*. Wouter Swierstra. Call AppleScript from Haskell*SDL-ttf-0.4.0*. David Himmelstrup. Binding to libSDL_ttf*Finance-Quote-Yahoo-0.2*. Brad Clawsie. Obtain quote data from finance.yahoo.com*xmobar-0.7*. Andrea Rossato. A Minimalistic Text Based Status Bar

- A brief Haskell-at-OSCON trip report
- Wow! OSCON video viewing statistics
- OSCon Wednesday Part 2
- A Taste of Haskell, A Taste of C
- OSCON Day 1
- A Taste of Haskell
- OSCON 2007
- Threading Building Blocks and C++
- OSCON: Wednesday Morning
- OSCON: Wednesday Afternoon
- OSCON 2007 (July 25)
- Nested Data Parallelism in Haskell
- OSCON 2007: Wednesday Morning Keynotes
- A Taste of Haskell

- Ord, Countable Ordinals, and an Idea of sigfpe
- Word numbers, Part 1: Billion approaches
- Implementing SmallTalk in Haskell
- From walking to zipping, Part 1: Moving right
- From walking to zipping, Part 2: Down and up
- Irrefutable patterns for the ignorant
- Making Haskell nicer for game programming
- Nested Data Parallelism in Haskell
- Compiling Haskell to Erlang
- Peano's Axioms IV: Advanced Functions and Integers
- 37 Reasons to Love Haskell
- On the value of strong static typing
- Parsec Parser Testing with QuickCheck
- Fallacies in the Great Dynamic vs Static Debate
- Implementing a dictionary using first class functions
- Strong specifications in Coq: the type says everything
- Run length encoding in Haskell
- Run length encoding and arrows
- Playing with Arrows
- Monads! (and Why Monad Tutorials Are All Awful)
- Haskell: Explaining Arrows through XML Transformations
- Monads as computation
- Closed Categories
- Good Haskell Style
- Monads are hard to teach
- Parsec
- First attempt at using GTK with Haskell
- Introduction to Haskell, Part 3: Monads
- Programming in Haskell
- Haskell Fun
- Algebraic Data Types again
- DFAs, Categories, and Typecheckers
- Haskell State Accessors (second attempt: Composability)
- Developing Programs and Proofs Spontaneously using GADT
- Encoding Inductive and Coinductive Types in Polymorphic Lambda Calculus
- Polymorphic Types in Haskell without Constructors?
- Substraction not Definable in Simply Typed Lambda Calculus
- Imperative programming is a special type of functional programming
- Binding Haskell to C structs

*schluehk*: ... Haskell taking over the world and troubled parents ask why their kids have turned into math hippies talking about nothing but love and abstract algebra...*JohnGoerzen*: Haskell manipulates functions with the same ease that Perl manipulates strings*(anonymous Russian blogger)*: Glory to Simons! Glory to Swedish professors!*Laurent Sansonetti*: I appreciated so much the Haskell talks that I am now learning the language.*dcoutts*: Apparently that's only 200x faster than the faster of two common python serialisation libs, so we've got some way to go yet.*slava*: [on Isabelle for web frameworks] IM IN UR WEB SITEZ, CODING PROVABLY-CORRECT BLINK TAG!!*gimboland*: At present i'd say 'tinkering with a nuclear bomb' is approximately where i am with monads...*jcreigh*: Could not find instance Ord for type ProgrammingLanguage*kowey*: i suspect we're one of the rare wikibooks to use higher order templates*monochrom*: 'm a -> (a -> m b) -> m b' is much more to the point than 'mumble computation mumble computation mumble computation mumble'*roconnor*: damn it, Haskell pseudo code is indistinguishable from actual code*slava*: Because top enterprise industry analysts recommend Because top enterprise industry analysts recommend that managers need to focus on Agile methodologies, SOA, B2B and Yoneda's lemma in today's rich internet application-driven environment. Don't get left behind by the AJAX craze by missing out on call center outsourcing and Yoneda's lemma!

*Fri Jul 27 03:41:57 PDT 2007*. *Simon Marlow*. Pointer
Tagging.
This patch implements pointer tagging as per our ICFP'07 paper 'Faster laziness
using dynamic pointer tagging'. It improves performance by 10-15% for most
workloads, including GHC itself.
The original patches were by Alexey Rodriguez Yakushev, with additions and
improvements by me. I've re-recorded the development as a single patch.
The basic idea is this: we use the low 2 bits of a pointer to a heap object (3
bits on a 64-bit architecture) to encode some information about the object
pointed to. For a constructor, we encode the 'tag' of the constructor (e.g.
True vs. False), for a function closure its arity. This enables some decisions
to be made without dereferencing the pointer, which speeds up some common
operations. In particular it enables us to avoid costly indirect jumps in many
cases.
More information in
the commentary.

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.

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`