Haskell Weekly News: December 05, 2006

Submitted by dons on Mon, 12/04/2006 - 8:02pm.

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

This week we see the 11th Haskell Communities and Activities Report released, Visual Haskell 0.2 is available, and a suite of new libraries and applications are announced.


Communities and Activities Report. Andres Loeh published the Haskell Communities and Activities Report (11th edition, November 2006). The report is now available from the Haskell Communities home page in several formats. The goal of the report is to improve the communication between the increasingly diverse groups, projects and individuals working on, with, or inspired by Haskell. When we try for the next update, six months from now, you might want to report on your own work, project, research area or group as well.

Visual Haskell prerelease 0.2. Krasimir Angelov announced that there is a prerelease version of Visual Haskell available. This is the first version that is: available for both VStudio 2003 and VStudio 2005, and distributed with a stable GHC version (6.6)

Haskell MIME library. Jeremy Shaw announced the availability of a MIME processing library. This library is supposed to be able to parse emails and decode various attachments, and generate emails with attachments. The library includes modules that implement portions of: RFC 2045, RFC 2046, RFC 2387 and RFC 2822.

Core (ghc-base) library. Bulat Ziganshin announced progress on the Core library project, to divide the Haskell base library into two parts: small compiler-specific one (the Core library proper) and the rest: new, compiler-independent Base library that uses only services provided by Core lib.

hpodder 0.99.0. John Goerzen announced hpodder 0.99.0, the first beta candidate for making an eventual 1.0.0 release of hpodder. hpodder is a podcast downloader that happens to be written in Haskell. This version introduces two major new features: nicer apt-like output and multithreaded downloading.

MissingH 0.16.3. John Goerzen released MissingH 0.16.3. Including a new module MissingH.ProgressTracker which tracks the progress of long-running tasks, and MissingH.Quantity which renders numbers according to a quantification system such as SI or binary.

The restricted IO monad. Stefan O'Rear introduced RIO, an experimental library for extensible restricted IO in Haskell.

Typed symbolic differentiation. Oleg Kiselyov showed symbolic differentiation of a wide class of numeric functions without any interpretative overhead. The functions to symbolically differentiate can be given to us in a compiled form (in .hi files); their source code is not needed. We produce a (compiled, if needed) function that is an exact, algebraically simplified analytic derivative of the given function. Our approach is reifying code into its `dictionary view', intensional analysis of typed code expressions, and the use of staging to evaluate under lambda.


This section covers the Haskell' standardisation process.


This week's proposals and extensions to the standard libraries.


The Data.Array.* hierarchy is unsafe: segfaulting for fun and profit. Spencer Janssen revealed that a malicious Ix instance can be used to create segfaulting array programs in pure Haskell (under GHC or Hugs), without the use of anything marked 'unsafe'. The array operators trust the Ix instance to manage boundaries correctly. It was pointed out that the Haskell standard requires Ix instances obey an in-range side condition (just as Monad instances have side conditions).

Merging MissingH into the standard libraries. John Goerzen proposed a renaming plan to aid splitting, and merging the various MissingH modules into their own packages, and into base

Defining Cg, HLSL style vectors in Haskell. Slavomir Kaslev asked about defining a couple of float2, float3, float4 Cg, HLSL style vectors in Haskell.

Extracting sublists. Huazhi Gong asked about the best way to extract sublists. Several solutions where suggested, including a nice one by Oleg.

Generating 50 randoms. Huazhi Gong also asked about how best to generate 50 random integers, leading to some lovely of creative writing...

Blog noise

Haskell news from the blogosphere.

Quotes of the Week

  • Andreas Rossberg: To the functional programmer's eye a loop is just a degenerate form of linear recursion written in an adhoc special syntax.
  • Cale: [on the discovery of a secret pi calculus monad] Someone apparently wasn't informed that integration into the collective Haskell hive-mind is mandatory
  • secretgeek: Because we've reached the limits of Moore's Law, the computers of the future will have many-core processors and all our programs will need to be written in a combination of Haskell and Lisp, that will itself be so powerful that the computers of the future will not be able to implement any of our ideas without creating time-travelling algorithms that borrow processing power from other computers that are further into the future. This sounds difficult, but in Lisp it isn't difficult at all. In Haskell this is a built-in feature and the way you implement it is just a no-brainer...
  • PaulPotts: Haskell is an even 'redder' pill than Lisp or Scheme
  • Pseudonym: Assuming an advanced compiler, your code will be sent to Oleg who will implement it in the type system.
  • cjeris: [wants ghc for wii] Build and deploy an army of functional dependencies and multi-parameter type classes to defend Hyrule from the menacing MUTATRON and his legion of Java programmers!
  • dons: My feeling is that the Java programmers will welcome us as liberators
  • greentea: To learn Monads, one must /become/ a Monad.
  • newsham: There are Just 1 types of people, Nothing and those who understand monads
  • vegai: In Soviet Russia, YOU blow up GHC's brain!

Code Watch

Wed Nov 29 11:24:21 PST 2006. simonpj. Make SpecConstr work right for nullary constructors. For totally stupid reasons, SpecConstr didn't work for the (particularly easy) case of nullary constructors like True and False. I just had some equations in the wrong order, so that a Var case came first, which matches a nullary constructor, with the constructor-application case afterwards. The fix is easy.

Fri Dec 1 04:53:04 PST 2006. Wolfgang Thaller. Decouple -O from -fvia-C. Nowadays, there are situations where -fvia-C is definitely unwanted, such as when -fPIC is used on some platforms, so we do not want implicit -fvia-C any more.

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