Haskell Weekly News: October 25, 2007
Welcome to issue 66 of HWN, a newsletter covering developments in the Haskell community.
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 everyone involved!
HackageThis 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 infinite lists
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 for Haskell.
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 firstname.lastname@example.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 client-side HTTP.
iconv 0.4. Uploaded by Duncan Coutts. iconv, provides an interface to the POSIX iconv library functions for string encoding conversion.
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 email@example.com. 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 list interface.
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, typesetting ...
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 for Sqlite3
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 file format
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 scripting stuff.
hstats. Uploaded by Marshall Beddoe. hstats, library of commonly used statistical functions.
LibrariesThis 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
Conference roundupHaskell papers presented at the Haskell Workshp, ICFP and CUFP, in Freiburg, Germany.
- 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 for Haskell
- 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 Erlang
Blog noiseHaskell 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 haskell 98
- mauke: haskell software should move from alpha to beta to eta, then lambda
- pl0nk: I wonder what SPJ sees when he closes his eyes before answering a question.
About the Haskell Weekly News
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 http://www.cse.unsw.edu.au/~dons/code/hwn