[Haskell] Haskell Weekly News: October 25, 2007
dons at galois.com
Thu Oct 25 18:59:09 EDT 2007
Haskell Weekly News
Issue 66 - October 25, 2007
Welcome to issue 66 of HWN, a newsletter covering developments in the
A huge month for the Haskell community, with the Haskell Workshop,
ICFP and CUFP conferences, the second international Haskell Hackathon,
and 63 libraries and tools uploaded to hackage! A round of applause to
This week's new libraries in the Hackage library database.
* SDL 0.5.0. Uploaded by Lemmih. SDL, a binding to libSDL.
* Stream 0.2.1. Uploaded by Wouter Swierstra. Stream, functions,
analogous to those from Data.List, to create and manipulate
* bktrees 0.1.1. Uploaded by Josef Svenningsson. bktrees,
Burhard-Keller trees provide an implementation of sets which apart
from the ordinary operations also has an approximate member
search, allowing you to search for elements that are of a certain
distance from the element you are searching for.
* happy 1.17. Uploaded by Simon Marlow. happy, a parser generator
* HaXml 1.19. Uploaded by Malcolm Wallace. HaXml, utilities for
parsing, filtering, transforming and generating XML documents.
* polyparse 1.1. Uploaded by Malcolm Wallace. polyparse, A
variety of alternative parser combinator libraries, including the
original HuttonMeijer set. The Poly sets have features like good
error reporting, arbitrary token type, running state, lazy
parsing, and so on. Finally, Text.Parse is a proposed replacement
for the standard Read class, for better deserialisation of Haskell
values from Strings.
* bzlib 0.4.0.1 . Uploaded by Duncan Coutts. bzlib, compression
and decompression in the bzip2 format.
* zlib 0.4.0.1. Uploaded by Duncan Coutts. zlib, compression and
decompression in the gzip and zlib formats
* tar 0.1.1.1. Uploaded by Bjorn Bringert. tar, a library for
reading and writing TAR archives.
* unix-compat 0.1.2.0. Uploaded by Bjorn Bringert. unix-compat,
provides portable implementations of parts of the unix package.
This package re-exports the unix package when available. When it
isn't available, portable implementations are used.
* oeis 0.1. Uploaded by Brent Yorgey. oeis, Haskell interface to
the Online Encyclopedia of Integer Sequences.
* dataenc 0.9. Uploaded by Magnus Therning. dataenc, Data
encoding library currently providing Uuencode, Base64, Base64Url,
Base32, Base32Hex, and Base16.
* cabal-setup 1.2.1. Uploaded by Simon Marlow. cabal-setup,
cabal-setup is a user interface to Cabal. It provides the basic
commands for configuring, building, and installing Cabal packages.
* cabal-install 0.4.0. Uploaded by cabal-devel at haskell.org.
cabal-install, apt-get like tool for Haskell. The 'cabal'
command-line program simplifies the process of managing Haskell
software by automating the fetching, configuration, compilation
and installation of Haskell libraries and programs.
* HTTP 3001.0.0. Uploaded by Bjorn Bringert. HTTP, A library for
* iconv 0.4. Uploaded by Duncan Coutts. iconv, provides an
interface to the POSIX iconv library functions for string encoding
* binary 0.4.1. Uploaded by the Binary Strike Team. binary,
efficient, pure binary serialisation using lazy ByteStrings.
Haskell values may be encoded to and form binary formats, written
to disk as binary, or sent over the network. Serialisation speeds
of over 1 G/sec have been observed, so this library should be
suitable for high performance scenarios.
* Cabal 1.2.1. Uploaded by cabal-devel at haskell.org. Cabal: the
Haskell Common Architecture for Building Applications and
libraries = Libraries: a framework defining a common interface for
authors to more easily build their Haskell applications in a
portable way. The Haskell Cabal is meant to be a part of a larger
infrastructure for distributing, organizing, and cataloging
Haskell libraries and tools.
* bytestring 0.9. Uploaded by Don Stewart and Duncan Coutts.
bytestring. fast, packed, strict and lazy byte arrays with a
* arrows 0.3. Uploaded by Ross Paterson. arrows, Several classes
that extend the Arrow class, and some transformers that implement
or lift these classes.
* sat 1.0. Uploaded by Andrii Zvorygin. sat, CNF(Clausal Normal
Form) SATisfiability Solver and Generator.
* pcap 0.4. Uploaded by Bryan O'Sullivan. pcap,
system-independent interface for user-level packet capture
* hslogger4j 0.1.1. Uploaded by Bjorn Buckwalter. hslogger4j,
provides handlers for hslogger (John Goerzen's Haskell logging
library) that are compatible with log4j's XMLLayout. In particular
log messages created by the handlers can be published directly to
the GUI-based log viewer Chainsaw v2.
* IndentParser 0.2.1. Uploaded by Piyush P Kurur. IndentParser,
provides two modules, Text.ParserCombinators.Parsec.IndentParser
and Text.ParserCombinators.Parsec.IndentToken, for constructing
parser combinators for indentation based syntactic structures. The
former exports the basic indentation parser combinators and the
later together with Text.ParserCombinators.Parsec.Language and
Text.ParserCombinators.Parsec.Token can be used to define
tokenisers for programming languages.
* lazysmallcheck 0.1. Uploaded by Matthew Naylor and Fredrik
Lindblad. lazysmallcheck, a library for exhaustive,
demand-driven testing of Haskell programs. It is based on the idea
that if a property holds for a partially-defined input then it
must also hold for all fully-defined instantiations of the that
input. Compared to `eager' input generation as in SmallCheck, Lazy
SmallCheck may require significantly fewer test-cases to verify a
property for all inputs up to a given depth.
* HPDF 1.2. Uploaded by alpheccar. HPDF, A PDF library with
support for several pages, page transitions, outlines,
annotations, compression, colors, shapes, patterns, jpegs, fonts,
* xmonad. Uploaded by Spencer Janssen and Don Stewart. xmonad,
xmonad is a tiling window manager for X. Windows are arranged
automatically to tile the screen without gaps or overlap,
maximising screen use. All features of the window manager are
accessible from the keyboard: a mouse is strictly optional. xmonad
is written and extensible in Haskell. Custom layout algorithms,
and other extensions, may be written by the user in config files.
Layouts are applied dynamically, and different layouts may be used
on each workspace. Xinerama is fully supported, allowing windows
to be tiled on several screens.
* HCL 1.2. Uploaded by Justin Bailey. HCL, provides a set of
functions for building simple command-line interfaces. It allows
interfaces which collect values (such as Integers, Dates, or other
structured values), build lists of values, and use simple menus.
It is not intended to build complex interfaces with full cursor
control. It is oriented towards line-based interfaces.
* safecopy 0.2. Uploaded by David Himmelstrup. safecopy, an
extension to Data.Binary with built-in version control.
* selenium 0.2.1. Uploaded by Aaron Tomb. selenium, Haskell
bindings to communicate with a Selenium Remote Control server.
This package makes it possible to use Haskell to write test
scripts that exercise web applications through a web browser.
* HsOpenSSL 0.2. Uploaded by PHO. HsOpenSSL, a (part of) OpenSSL
binding for Haskell. It can generate RSA and DSA keys, read and
write PEM files, generate message digests, sign and verify
messages, encrypt and decrypt messages.
* X11-extras 0.4. Uploaded by Spencer Janssen. X11-extras,
missing bindings to the X11 graphics library.
* X11-1.2.3. Uploaded by Don Stewart. X11, a Haskell binding to
the X11 graphics library.
* flow2dot-0.2. Uploaded by Dmitry Astapov. flow2dot, generates
sequence diagrams from textual descriptions with help of Graphviz
graph drawing tool.
* hsSqlite3-0.0.1. Uploaded by Evgeny Jukov. hsSqlite, Bindings
* X11-xft-0.1. Uploaded by Clemens Fruhwirth. X11-xft, Bindings
to the Xft, X Free Type interface library, and some Xrender parts.
* metaplug-0.1.1. Uploaded by Austin Seipp. metaplug, a ghc-api
wrapper, designed to make the api more transparent across releases
and offer eval and plugin esque facilities in the form of a
simple, easy to modify library.
* dimensional. Uploaded by Bjorn Buckwalter. dimensional, a
library providing data types for performing arithmetic with
physical quantities and units. Information about the physical
dimensions of the quantities and 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. The
library is designed to, as far as is practical, enforce/encourage
best practices of unit usage.
* ProbabilityMonads. Uploaded by Eric Kidd. ProbabilityMonads,
tools for random sampling, explicit enumeration of possible
outcomes, and applying Bayes' rule. Highly experimental, and
subject to change. In particular, the Data.Probability API is
rather poor and could stand an overhaul.
* MonadRandom. Uploaded by Eric Kidd . MonadRandom, support for
computations which consume random values.
* MaybeT. Uploaded by Eric Kidd. MaybeT, Support for
computations with failures.
* network-bytestring. Uploaded by Johan Tibell.
network-bytestring, Faster and more memory efficient low-level
socket functions using Data.ByteStrings instead of Strings.
* irc. Uploaded by Trevor Elliott. irc, a set of combinators and
types for parsing IRC messages.
* clevercss. Uploaded by Georg Brandl. clevercss, a CSS
preprocessing library that allows defining variables and nesting
selectors so that you don't need to Repeat Yourself.
* HsHyperEstraier. Uploaded by PHO. HsHyperEstraier, a
HyperEstraier binding for Haskell. HyperEstraier is an embeddable
full text search engine which is supposed to be independent to any
particular natural languages.
* libmpd. Uploaded by Ben Sinclair. libmpd, client library for
MPD, the Music Player Daemon.
* hS3. Uploaded by Greg Heartsfield. hS3, provides an interface
to Amazon's Simple Storage Service (S3), allowing Haskell
developers to reliably store and retrieve arbitrary amounts of
data from anywhere on the Internet.
* infinity. Uploaded by Austin Seipp. infinity, tiny IRC bot,
extendable through plugins written in haskell
* WURFL. Uploaded by alpheccar. WURFL, support for the WURLF
* hburg. Uploaded by Igor Boehm. hburg, a program that generates
tree parsers for cost-augmented tree grammars. It is useful for
writing code generators for compilers. Given a mapping of a tree
structured intermediate representation onto target machine
instructions, HBURG generates a code generator that can be plugged
into the instruction selection phase of a compiler.
* ipprint. Uploaded by Gleb Alexeyev. ipprint, tiny helper for
pretty-printing values in ghci console
* numbers. Uploaded by Lennart Augustsson. numbers, instances of
the numerical classes for a variety of different numbers:
(computable) real numbers, arbitrary precision fixed numbers,
arbitrary precision floating point numbers, differentiable
numbers, symbolic numbers, natural numbers, interval arithmetic.
* numeric-quest. Uploaded by Henning Thielemann. numeric-quest,
List based linear algebra, similtaneous linear equations,
eigenvalues and eigenvectors, roots of polynomials, transcendent
functions with arbitrary precision implemented by continued
fractions, quantum operations, tensors
* shell-pipe. Uploaded by Henning Thielemann. shell-pipe, shell
* hstats. Uploaded by Marshall Beddoe. hstats, library of
commonly used statistical functions.
This week's proposals and extensions to the standard libraries.
* In base, for Data.Version, change the meaning of comparisons
* Add Compositor class as superclass of Arrow
Haskell papers presented at the Haskell Workshp, ICFP and CUFP, in
* Andy Gill and Colin Runciman. Haskell Program Coverage (pdf)
* Simon Marlow, José Iborra, Bernard Pope and Andy Gill. A
Lightweight Interactive Debugger for Haskell (pdf)
* Wouter Swierstra and Thorsten Altenkirch. Beauty in the Beast:
A Functional Semantics of the Awkward Squad (pdf)
* Matthew Naylor, Emil Axelsson and Colin Runciman. A
Functional-Logic Library for Wired (acm.org)
* Neil Mitchell and Colin Runciman. Uniform Boilerplate and List
Processing; Or: Scrap Your Scary Types (pdf)
* Philip Wadler and Simon Peyton Jones. Comprehensions with
`Order by' and `Group by'
* Geoffrey Mainland. Why It's Nice to be Quoted: Quasiquoting
* Louis-Julien Guillemette and Stefan Monnier. A Type-Preserving
Closure Conversion in Haskell (pdf)
* Demo 1: George Giorgidze and Henrik Nilsson. Programming
Modular Synthesizer in Haskell (.mov)
* Demo 2: Martin Grabmüller and Dirk Kleeblatt. Run-time Code
Generation in Haskell (.mov)
* Joao Fernandes, Alberto Pardo and João Saraiva. A Shortcut
Fusion Rule for Circular Program Calculation (pdf)
* Peng Li, Andrew Tolmach, Simon Marlow and Simon Peyton Jones.
Lightweight concurrency primitives for GHC (pdf)
* Demo 3: Don Stewart XMonad (.mov)
* Videos of all the Haskell Workshop talks
* Selected videos from ICFP and IFL
Finance. An NYC finance company requires an expert level Haskell
user; must be comfortable with monads, monad transformers, type level
programming (i.e. MPTC, overlapping and undecidable instances), and
lazy evaluation (i.e. know how to find and eliminate space leaks).
Web Developer. RedNucleus Ltd requires a highly motivated
programmer for a full or part-time posititon developing social web
applications. Initially you will develop and maintain applications
using RubyOnRails or a similar framework, but there will be
opportunities to explore new web programming paradigms with
declarative languages. The successful application will have exposure
to functional programming methodologies, e.g. in Haskell, Lisp or
Haskell news from the blogosphere.
* Strongly Specified Functions
* Amazon S3 binding
* Octane Mech, OpenGL Haskell based mech game; early code and some haskell notes
* Fast, parallel log file processing in Haskell
* Haskell in the Hallway: an interview with Simon Peyton Jones
* Agda Exercise: Sized Mergesort
* Agda Exercise: Proving that Mergesort Returns Ordered Lists
* Lazy functions in C# LlNQ
* Seemingly impossible functional programs
* For most programmers learning Haskell will be no picnic : a tutorial
* Haskell in industry: a surprising encounter!
* Exhaustive search over infinite binary trees
* How to Install HAppS
* Simple Haskell Web Programming with HAppS
* Haskell Web Spider, Part 1: HaXML
* Haskell Web Spider, Part 2: HXT, or I Was Promised There Would Be No Side Effects
* In praise of implementation-defined languages
* Arboreal Isomorphisms from Nuclear Pennies
* Higher-dimensional enumeration
* Haskell and my preception of programming languages
* Monads in Scala
* Total stream processors and quantification over infinite number of infinite streams
* The xmonad experience
* Wiring Haskell into a FastCGI Web Server
* A Link-Resolving Library
* Immutable data structures are the way of the future in C#
* What do you get when you curry partial application?
* Universal Architecture
* A venture into functional programming (by a Python programmer)
* Is Java Dying?
* Tracing your code... the dirty way!
* Using Emacs to insert SCC annotations in Haskell code
* Erlang and Haskell Books: First Impressions
* Update on F# and Haskell, especially monads
* Back from ICFP
* A Simple RPN Calculator in Haskell
* Another simple RPN calculator in Haskell
* A simple regex engine in Haskell
* The square of the Catalan sequence
* Haskell changing your thinking
* How I started off with Haskell and wound up with Lisp
* Phantom type problems
* My first trip to the phantom zone
* Writing Your Last For-Loop
* The Curry-Howard Correspondence in Haskell
* Tuppence Tour of Haskell Concurrency Constructs
* Is Haskell really expressive?
* A Quickstart to Haskell
* Respect C Programmers
* Building Functions from Functions, part 2: Function Composition
* On the Importance of Purity
* Functional programming - Back to the Roots
* Simpler, Easier! Or, how to write a simple dependent type checker
* Is Visual Basic 9 'Haskell for the Masses?'
Quotes of the Week
* As someone who has written production code in functional languages
(Ive written Haskell for the U.S. Navy) and in other languages
(Perl and Ruby for several startups), I have to say that Haskell
enabled me to be way more productive than the untyped scripting
languages. Ruby is fun, but Haskell lets me get the work done
faster and better.
* Perhaps if C wants to be taken seriously it should provide
portability, which has been present in Haskell since the beginning
* However, since starting learning Haskell I?ve had aha-moments that
manifest themselves in a single line of code. This has never
happened before. Ever!
* Cale: Inheritance? Inheritance is broken, anyway
* DRMacIver: I dread to think what category theory would look like
after the software engineering world had got their grubby paws on
it. Enterprise variant functors. Commutative UML diagrams.
* DukeDave: Haskell has the greatest unlearning curve
* Jon Harrop: As Haskell has shown, laziness cannot be implemented efficient at all.
* Logan Capaldo: All I want for christmas is monad comprehensions
* Olathe: We can't be totally sure, though. There might be some
value of 1 that wasn't checked.
* Pseudonym: Smart programmers naturally write monadic code, even if
they don't realise it.
* augustss: Haskell already has enterprise monads; there is a fail method.
* bitwize: The combinator known as compose; Makes me extremely
morose; The full stop is better, than writing in letters; Which
makes it extremely verbose
* glguy: map became not overloaded in the great polymorphic scare of
* mauke: haskell software should move from alpha to beta to eta,
* pl0nk: I wonder what SPJ sees when he closes his eyes before
answering a question.
About the Haskell Weekly News
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 galois.com. The
darcs repository is available at darcs get
More information about the Haskell