General News

Haskell Weekly News: February 23, 2008

Submitted by dons on Sat, 02/23/2008 - 3:52pm.

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

One hundred unique new and updated libraries and applications in the past two weeks, including mutable arrays, compression, games, web frameworks, data structures, a file system, Haskell tools, concurrency, graphics, cryptography, systems administration, signal processing, new guis and several audio libraries

Hackage

New and updated libraries in the Hackage library database.
  • ArrayRef 0.1.2. Uploaded by Gwern Branwen. ArrayRef: Unboxed references, dynamic arrays and more.

  • zlib 0.4.0.4. Uploaded by Duncan Coutts. zlib: Compression and decompression in the gzip and zlib formats.

  • hetris 0.1. Uploaded by Gwern Branwen. hetris: Text Tetris.

  • bzlib 0.4.0.3. Uploaded by Duncan Coutts. bzlib: Compression and decompression in the bzip2 format.

  • HAppS-Server 0.9.2. Uploaded by David Himmelstrup. HAppS-Server: Web related tools and services..

  • HAppS-State 0.9.2. Uploaded by David Himmelstrup. HAppS-State: Event-based distributed state..

  • HAppS-Data 0.9.2. Uploaded by David Himmelstrup. HAppS-Data: HAppS data manipulation libraries.

  • HAppS-IxSet 0.9.2. Uploaded by David Himmelstrup. HAppS-IxSet: Added by DavidHimmelstrup, Fri Feb 22 15:18:20 PST 2008..

  • HAppS-Util 0.9.2. Uploaded by David Himmelstrup. HAppS-Util: Web framework.

  • Ranged-sets 0.2.0. Uploaded by Paul Johnson. Ranged-sets: Ranged sets for Haskell.

  • halfs 0.2. Uploaded by Gwern Branwen. halfs: Haskell File System.

  • sessions 2008.2.22. Uploaded by Matthew Sackman. sessions: Session Types for Haskell.

  • infix 0.1. Uploaded by Gwern Branwen. infix: Infix expression re-parsing (for HsParser library).

  • reify 0.1. Uploaded by Gwern Branwen. reify: Serialize data.

  • highWaterMark 0.1. Uploaded by Gwern Branwen. highWaterMark: Memory usage statistics.

  • hinvaders 0.1. Uploaded by Gwern Branwen. hinvaders: Space Invaders.

  • baskell 0.1. Uploaded by Gwern Branwen. baskell: An interpreter for a small functional language.

  • control-event 0.2. Uploaded by Thomas DuBuisson. control-event: Event scheduling system..

  • nymphaea 0.1. Uploaded by Gwern Branwen. nymphaea: An interactive GUI for manipulating L-systems.

  • hopenssl 1.0. Uploaded by Peter Simons. hopenssl: FFI bindings to OpenSSL's EVP digest interface.

  • Monadius 0.91. Uploaded by Gwern Branwen. Monadius: 2-D arcade scroller.

  • postmaster 0.1. Uploaded by Peter Simons. postmaster: Postmaster ESMTP Server.

  • hsyslog 1.2. Uploaded by Peter Simons. hsyslog: FFI interface to syslog(3) from POSIX.1-2001..

  • hsemail 1.2. Uploaded by Peter Simons. hsemail: Internet Message Parsers.

  • hsdns 1.3. Uploaded by Peter Simons. hsdns: Asynchronous DNS Resolver.

  • funcmp 1.1. Uploaded by Peter Simons. funcmp: Functional MetaPost.

  • streamproc 1.1. Uploaded by Peter Simons. streamproc: Stream Processer Arrow.

  • pugs-HsSyck 0.41. Uploaded by Gwern Branwen. pugs-HsSyck: Fast, lightweight YAML loader and dumper.

  • HsSyck 0.42. Uploaded by Gwern Branwen. HsSyck: Fast, lightweight YAML loader and dumper.

  • mohws 0.1. Uploaded by Gwern Branwen. mohws: Modular Haskell Web Server.

  • HsJudy 0.1. Uploaded by Gwern Branwen. HsJudy: Judy bindings, and some nice APIs.

  • probability 0.2.1. Uploaded by Henning Thielemann. probability: Probabilistic Functional Programming.

  • dsp 0.2.1. Uploaded by Henning Thielemann. dsp: Haskell Digital Signal Processing.

  • pugs-hsregex 1.0. Uploaded by Gwern Branwen. pugs-hsregex: Haskell PCRE binding.

  • ListLike 1.0.1. Uploaded by John Goerzen. ListLike: Generic support for list-like structures.

  • SDL-gfx 0.5.2. Uploaded by David Himmelstrup. SDL-gfx: Binding to libSDL_gfx.

  • SDL-ttf 0.5.2. Uploaded by David Himmelstrup. SDL-ttf: Binding to libSDL_ttf.

  • SDL-mixer 0.5.2. Uploaded by David Himmelstrup. SDL-mixer: Binding to libSDL_mixer.

  • SDL-image 0.5.2. Uploaded by David Himmelstrup. SDL-image: Binding to libSDL_image.

  • SDL 0.5.2. Uploaded by David Himmelstrup. SDL: Binding to libSDL.

  • DeepArrow 0.2. Uploaded by Conal Elliott. DeepArrow: Arrows for "deep application".

  • GuiTV 0.4. Uploaded by Conal Elliott. GuiTV: GUIs for Tangible Values.

  • Shellac-compatline 0.9. Uploaded by Robert Dockins. Shellac-compatline: "compatline" backend module for Shellac.

  • WordNet 0.1.2. Uploaded by Max Rabkin. WordNet: Haskell interface to the WordNet database.

  • lazyarray 0.1.3. Uploaded by Milan Straka. lazyarray: Efficient implementation of lazy monolithic arrays (lazy in indexes)..

  • GenI 0.16.1. Uploaded by Eric Kow. GenI: A natural language generator (specifically, an FB-LTAG surface realiser).

  • libGenI 0.16.1. Uploaded by Eric Kow. libGenI: A natural language generator (specifically, an FB-LTAG surface realiser).

  • alsa-midi 0.3.1. Uploaded by Henning Thielemann. alsa-midi: Bindings for the ALSA sequencer API (MIDI stuff).

  • midi 0.0.5. Uploaded by Henning Thielemann. midi: Handling of MIDI messages and files.

  • event-list 0.0.6. Uploaded by Henning Thielemann. event-list: Event lists with relative or absolute time stamps.

  • numeric-quest 0.1.1. Uploaded by Henning Thielemann. numeric-quest: Math and quantum mechanics.

  • markov-chain 0.0.2. Uploaded by Henning Thielemann. markov-chain: Markov Chains for generating random sequences with a user definable behaviour..

  • hmp3 1.5.1. Uploaded by Don Stewart. hmp3: An ncurses mp3 player written in Haskell.

  • TypeIlluminator 0.0. Uploaded by Gwern Branwen. TypeIlluminator: TypeIlluminator is a prototype tool exploring debugging of type errors/.

  • Takusen 0.7. Uploaded by Don Stewart. Takusen: Database library with left-fold interface, for PostgreSQL, Oracle, SQLite, ODBC..

  • carray 0.1.2. Uploaded by Jed Brown. carray: A C-compatible array library..

  • jack 0.5. Uploaded by Henning Thielemann. jack: Bindings for the JACK Audio Connection Kit.

  • non-negative 0.0.1. Uploaded by Henning Thielemann. non-negative: Non-negative numbers.

  • RJson 0.3.3. Uploaded by Alex Drummond. RJson: A reflective JSON serializer/parser..

  • clevercss 0.1.1. Uploaded by Georg Brandl. clevercss: A CSS preprocessor.

  • fft 0.1.1. Uploaded by Jed Brown. fft: Bindings to the FFTW library..

  • storable-complex 0.1. Uploaded by Jed Brown. storable-complex: Storable instance for Complex.

  • winerror 0.1. Uploaded by Felix Martini. winerror: Error handling for foreign calls to the Windows API..

  • linkchk 0.0.2. Uploaded by Gwern Branwen. linkchk: linkchk is a network interface link ping monitor..

  • popenhs 1.0.0. Uploaded by Gwern Branwen. popenhs: popenhs is a popen-like library for Haskell..

  • Flippi 0.0.3. Uploaded by Gwern Branwen. Flippi: Wiki.

  • DisTract 0.2.5. Uploaded by Gwern Branwen. DisTract: Distributed Bug Tracking System.

  • goa 3.0. Uploaded by Gwern Branwen. goa: GHCi bindings to lambdabot.

  • hinstaller 2008.2.16. Uploaded by Gwern Branwen. hinstaller: Installer wrapper for Haskell applications.

  • GeoIp 0.1. Uploaded by Stephen Cook. GeoIp: Pure bindings for the MaxMind IP database..

  • hpodder 1.1.2. Uploaded by John Goerzen. hpodder: Podcast Aggregator (downloader).

  • wxcore 0.10.2. Uploaded by Eric Kow. wxcore: wxHaskell core.

  • wx 0.10.2. Uploaded by Eric Kow. wx: wxHaskell.

  • flow2dot 0.3. Uploaded by Dmitry Astapov. flow2dot: Generates sequence diagrams from textual descriptions.

  • strict-concurrency 0.2. Uploaded by Donald Stewart. strict-concurrency: Strict concurrency abstractions.

  • TV 0.4. Uploaded by Conal Elliott. TV: Tangible Values -- composable interfaces.

  • geniconvert 0.15. Uploaded by Eric Kow. geniconvert: Conversion utility for the GenI generator.

  • ctemplate 0.1. Uploaded by Adam Langley. ctemplate: Binding to the Google ctemplate library.

  • arrows 0.4. Uploaded by Ross Paterson. arrows: Arrow classes and transformers.

  • lhs2tex 1.13. Uploaded by Andres Loeh. lhs2tex: Preprocessor for typesetting Haskell sources with LaTeX.

  • NGrams 1.1. Uploaded by Justin Bailey. NGrams: Simple application for calculating n-grams using Google..

  • lambdabot 4.1. Uploaded by Gwern Branwen. lambdabot: A multi-talented IRC bot.

  • HsOpenSSL 0.4. Uploaded by Masatake Daimon. HsOpenSSL: (Part of) OpenSSL binding for Haskell.

  • network-minihttp 0.1. Uploaded by Adam Langley. network-minihttp: A very minimal webserver.

  • ZFS 0.0. Uploaded by Gwern Branwen. ZFS: Oleg's Zipper FS.

  • fst 0.9. Uploaded by Gwern Branwen. fst: Finite state transducers.

  • haskell-in-space 0.1. Uploaded by Gwern Branwen. haskell-in-space: 'Asteroids' arcade games..

  • unix-pty-light 0.1. Uploaded by Stuart Cook. unix-pty-light: POSIX pseudo-terminal support.

  • bot 0.1. Uploaded by Conal Elliott. bot: bots for functional reactive programming.

  • Hedi 0.1. Uploaded by Paolo Veronelli. Hedi: Line oriented editor.

  • network-bytestring 0.1.1.2. Uploaded by Johan Tibell. network-bytestring: Fast and memory efficient low-level networking.

  • leksah 0.1.1. Uploaded by Juergen NicklischFranken. leksah: Haskell IDE written in Haskell.

  • nano-hmac 0.2.0. Uploaded by Hitesh Jasani. nano-hmac: Bindings to OpenSSL HMAC..

  • monadenv 0.0-2005-02-14. Uploaded by Gwern Branwen. monadenv: Added by GwernBranwen, Sun Feb 10 20:15:11 PST 2008..

  • blockio 0.0-2006-02-03. Uploaded by Gwern Branwen. blockio: Block-oriented I/O Driver.

  • child 0.0-2005-02-14. Uploaded by Gwern Branwen. child: Added by GwernBranwen, Sun Feb 10 19:35:20 PST 2008..

  • highlighting-kate 0.2.1. Uploaded by John MacFarlane. highlighting-kate: Syntax highlighting.

Blog noise

Haskell news from the blogosphere.

Quotes of the Week

  • Erik Engbrecht: The key to language success is making it powerful enough for a couple cowboys to do the work of an entire team in a shorter period of time. Selling fast and cheap is easy. If you have enough fast and cheap, the business people won't care if you are making it out of bubble-gum and duct-tape, because you are giving them what they want.
  • pozorvlak: I'm going to make what should be an uncontroversial statement: if you don't understand and use monads, you are at best a quarter of a Haskell programmer. A corollary of this is that, since using monad transformers is the only (or at least the approved) way to use two or more monads together, if you don't understand and use monad transformers you are at best half a Haskell programmer.
  • mrevelle: As Lisp to lists and Smalltalk to objects: Haskell to computation
  • Paul: I would use Haskell to build a product or service, and I mean that in the sense that I can see how to train a team and build processes (prototyping, implementation, quality, deployment, support) around Haskell.
  • Yegge: Haskell, OCaml and their ilk are part of a 45-year-old static-typing movement within academia to try to force people to model everything.

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 http://code.haskell.org/~dons/code/hwn/

Haskell Weekly News: February 10, 2008

Submitted by dons on Sat, 02/23/2008 - 2:55pm.

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

A quick update HWN this week, with a gazillion new libraries on Hackage

Hackage

New and updated libraries in the Hackage library database.
  • WordNet 0.1.1. Uploaded by Max Rabkin. WordNet: Haskell interface to the WordNet database.

  • lazysmallcheck 0.1. Uploaded by Gwern Branwen. lazysmallcheck: A library for demand-driven testing of Haskell programs.

  • DrIFT 2.2.3. Uploaded by Gwern Branwen. DrIFT: Program to derive type class instances.

  • highlighting-kate 0.2. Uploaded by John MacFarlane. highlighting-kate: Syntax highlighting.

  • leksah 0.1. Uploaded by Juergen NicklischFranken. leksah: Genuine Haskell Face.

  • frag 1.1. Uploaded by Gwern Branwen. frag: 3-D First Person Shooter (FPS).

  • GoogleChart 0.2. Uploaded by Evan Martin. GoogleChart: Generate web-based charts using the Google Chart API.

  • HFuse 0.1. Uploaded by Gwern Branwen. HFuse: HFuse is a binding for the Linux FUSE library.

  • GoogleChart 0.1. Uploaded by Evan Martin. GoogleChart: Generate web-based charts using the Google Chart API.

  • Finance-Quote-Yahoo 0.5.0. Uploaded by Brad Clawsie. Finance-Quote-Yahoo: Obtain quote data from finance.yahoo.com.

  • binary-strict 0.3.0. Uploaded by Adam Langley. binary-strict: Binary deserialisation using strict ByteStrings.

  • Stream 0.2.3. Uploaded by Wouter Swierstra. Stream: A library for manipulating infinite lists..

  • Finance-Treasury 0.1.1. Uploaded by Stephen Lihn. Finance-Treasury: Obtain Treasury yield curve data.

  • Hedi 0.1. Uploaded by Paolo Veronelli. Hedi: Line oriented editor.

  • newports 1.1. Uploaded by Brad Clawsie. newports: List ports newer than N days on a FreeBSD system.

  • Finance-Treasury 0.1. Uploaded by Stephen Lihn. Finance-Treasury: Obtain Treasury yield curve data.

  • GPLib 0.0. Uploaded by Gwern Branwen. GPLib: Generic library for genetic programming.

  • nano-hmac 0.1.1. Uploaded by Hitesh Jasani. nano-hmac: Bindings to OpenSSL HMAC..

  • multiset 0.1. Uploaded by Twan VanLaarhoven. multiset: The Data.MultiSet container type.

  • hpodder 1.1.0. Uploaded by John Goerzen. hpodder: Podcast Aggregator (downloader).

  • bimap 0.2.1. Uploaded by Stuart Cook. bimap: Bidirectional mapping between two key types.

  • monadLib 3.4.4. Uploaded by Iavor Diatchki. monadLib: A collection of monad transformers..

  • IOSpec 0.2. Uploaded by Wouter Swierstra. IOSpec: A pure specification of the IO monad..

  • bimap 0.2. Uploaded by Stuart Cook. bimap: Bidirectional mapping between two key types.

  • strictify 0.1. Uploaded by Sterling Clover. strictify: Find a local optimum of strictness annotations..

  • heap 0.2.2. Uploaded by Stephan Friedrichs. heap: Heaps in Haskell.

  • LDAP 0.6.4. Uploaded by John Goerzen. LDAP: Haskell binding for C LDAP API.

  • HStringTemplate 0.2. Uploaded by Sterling Clover. HStringTemplate: StringTemplate implementation in Haskell..

  • RJson 0.3.2. Uploaded by Alex Drummond. RJson: A reflective JSON serializer/parser..

  • network-dns 0.1.1. Uploaded by Adam Langley. network-dns: A pure Haskell, asyncronous DNS client library.

  • lcs 0.2. Uploaded by Ian Lynagh. lcs: Find longest common sublist of two lists.

  • tracker 0.1. Uploaded by Will Thompson. tracker: Client library for Tracker metadata database, indexer and search tool.

  • CC-delcont 0.2. Uploaded by Dan Doel. CC-delcont: Delimited continuations and dynamically scoped variables.

  • control-timeout 0.1.2. Uploaded by Adam Langley. control-timeout: Timeout handling.

  • network-dns 0.1. Uploaded by Adam Langley. network-dns: A pure Haskell, asyncronous DNS client library.

  • binary-strict 0.2.4. Uploaded by Adam Langley. binary-strict: Binary deserialisation using strict ByteStrings.

  • heap 0.1.1. Uploaded by Stephan Friedrichs. heap: Heaps in Haskell.

  • HCL 1.3. Uploaded by Justin Bailey. HCL: High-level library for building command line interfaces..

  • yi 0.3. Uploaded by Jean PhilippeBernardy. yi: The Haskell-Scriptable Editor.

  • binary-strict 0.2.3. Uploaded by Adam Langley. binary-strict: Binary deserialisation using strict ByteStrings.

  • heap 0.1. Uploaded by Stephan Friedrichs. heap: Heaps in Haskell.

  • pureMD5 0.1.2. Uploaded by Thomas DuBuisson. pureMD5: MD5 implementations that should become part of a ByteString Crypto package..

  • RJson 0.3.1. Uploaded by Alex Drummond. RJson: A reflective JSON serializer/parser..

  • template 0.1.1.1. Uploaded by Johan Tibell. template: Simple string substitution.

  • network-bytestring 0.1.1.1. Uploaded by Johan Tibell. network-bytestring: Fast and memory efficient low-level networking.

  • ftphs 1.0.4. Uploaded by John Goerzen. ftphs: FTP Client and Server Library.

  • mersenne-random-pure64 0.1.1. Uploaded by Donald Stewart. mersenne-random-pure64: Generate high quality pseudorandom numbers purely using a Mersenne Twister.

  • Diff 0.1. Uploaded by Sterling Clover. Diff: O(ND) diff algorithm in haskell..

  • crack 0.1. Uploaded by Trevor Elliott. crack: A haskell binding to cracklib.

  • miniplex 0.3.3. Uploaded by Lukas Mai. miniplex: simple 1-to-N interprocess communication.

  • colock 0.2.2. Uploaded by Lukas Mai. colock: thread-friendly file locks that don't block the entire program.

  • mersenne-random-pure64 0.1. Uploaded by Donald Stewart. mersenne-random-pure64: Generate high quality pseudorandom numbers purely using a Mersenne Twister.

  • network-rpca 0.0.1. Uploaded by Adam Langley. network-rpca: A cross-platform RPC library.

  • xmonad-contrib 0.6. Uploaded by Spencer Janssen. xmonad-contrib: Third party extensions for xmonad.

  • xmonad 0.6. Uploaded by Spencer Janssen. xmonad: A tiling window manager.

  • codec-libevent 0.1.2. Uploaded by Adam Langley. codec-libevent: Cross-platform structure serialisation.

  • bytestringparser 0.3. Uploaded by Bryan OSullivan. bytestringparser: Combinator parsing with Data.ByteString.Lazy.

  • HStringTemplate 0.2. Uploaded by Sterling Clover. HStringTemplate: StringTemplate implementation in Haskell..

  • value-supply 0.1. Uploaded by Iavor Diatchki. value-supply: A library for generating values without having to thread state..

  • derive 0.1.1. Uploaded by Neil Mitchell. derive: A program and library to derive instances for data types.

  • control-timeout 0.1.1. Uploaded by Adam Langley. control-timeout: Timeout handling.

  • mkcabal 0.4.1. Uploaded by Donald Stewart. mkcabal: Generate cabal files for a Haskell project.

  • regexpr 0.2.9. Uploaded by Yoshikuni Jujo. regexpr: regular expression like Perl/Ruby in Haskell.

  • mtlparse 0.0.0.5. Uploaded by Yoshikuni Jujo. mtlparse: parse library use mtl package.

  • cgi 3001.1.5.2. Uploaded by Bjorn Bringert. cgi: A library for writing CGI programs.

  • xhtml 3000.0.2.2. Uploaded by Bjorn Bringert. xhtml: An XHTML combinator library.

  • harpy 0.4. Uploaded by Martin Grabmueller. harpy: Runtime code generation for x86 machine code.

  • editline 0.2. Uploaded by Judah Jacobson. editline: Bindings to the editline library (libedit)..

  • hmatrix 0.2.0.0. Uploaded by Alberto Ruiz. hmatrix: Linear algebra and numerical computations.

  • regexpr 0.2.8. Uploaded by Yoshikuni Jujo. regexpr: regular expression like Perl/Ruby in Haskell.

  • pcre-light 0.3. Uploaded by Donald Stewart. pcre-light: A small, efficient and portable regex library for Perl 5 compatible regular expressions.

  • mersenne-random 0.1. Uploaded by Donald Stewart. mersenne-random: Generate high quality pseudorandom numbers using a SIMD Fast Mersenne Twister.

  • AvlTree 2.4. Uploaded by Adrian Hey. AvlTree: Balanced binary trees using AVL algorithm..

  • fec 0.1.1. Uploaded by Adam Langley. fec: Forward error correction of ByteStrings.

  • COrdering 2.1. Uploaded by Adrian Hey. COrdering: An algebraic data type similar to Prelude Ordering..

  • i18n 0.3. Uploaded by Eugene Grigoriev. i18n: Internationalization for Haskell.

  • binary-strict 0.2.2. Uploaded by Adam Langley. binary-strict: Binary deserialisation using strict ByteStrings.

  • regexpr 0.2.6. Uploaded by Yoshikuni Jujo. regexpr: regular expression like Perl/Ruby in Haskell.

  • RJson 0.2. Uploaded by Alex Drummond. RJson: A reflective JSON serializer/parser..

  • regexpr 0.2.5. Uploaded by Yoshikuni Jujo. regexpr: regular expression like Perl/Ruby in Haskell.

  • fec 0.1. Uploaded by Adam Langley. fec: Forward error correction of ByteStrings.

  • dataenc 0.10.2. Uploaded by Magnus Therning. dataenc: Data encoding library.

  • regexpr 0.2.3. Uploaded by Yoshikuni Jujo. regexpr: regular expression like Perl/Ruby in Haskell.

  • regexpr 0.2.2. Uploaded by Yoshikuni Jujo. regexpr: regular expression like Perl/Ruby in Haskell.

  • reactive 0.3. Uploaded by Conal Elliott. reactive: Simple foundation for functional reactive programming.

  • regexpr 0.2.1. Uploaded by Yoshikuni Jujo. regexpr: regular expression like Perl/Ruby in Haskell.

  • djinn 2008.1.18. Uploaded by Lennart Augustsson. djinn: Generate Haskell code from a type.

  • Etherbunny 0.3. Uploaded by Nicholas Burlett. Etherbunny: A network analysis toolkit for Haskell.

  • regexpr 0.2.0. Uploaded by Yoshikuni Jujo. regexpr: regular expression like Perl/Ruby in Haskell.

  • RJson 0.1. Uploaded by Alex Drummond. RJson: A reflective JSON serializer/parser..

  • RJson 0.1. Uploaded by Alex Drummond. RJson: A reflective JSON serializer/parser..

  • regexpr 0.1.7. Uploaded by Yoshikuni Jujo. regexpr: regular expression like Perl/Ruby in Haskell.

  • reactive 0.2. Uploaded by Conal Elliott. reactive: Simple foundation for functional reactive programming.

  • srcinst 0.8.10. Uploaded by John Goerzen. srcinst: Build and install Debian packages completely from source.

  • dfsbuild 1.0.2. Uploaded by John Goerzen. dfsbuild: Build Debian From Scratch CD/DVD images.

  • darcs-buildpackage 0.5.12. Uploaded by John Goerzen. darcs-buildpackage: Tools to help manage Debian packages with Darcs.

  • anydbm 1.0.5. Uploaded by John Goerzen. anydbm: Interface for DBM-like database systems.

  • HDBC-sqlite3 1.1.4.0. Uploaded by John Goerzen. HDBC-sqlite3: Sqlite v3 driver for HDBC.

  • HDBC-postgresql 1.1.4.0. Uploaded by John Goerzen. HDBC-postgresql: PostgreSQL driver for HDBC.

  • HDBC-odbc 1.1.4.0. Uploaded by John Goerzen. HDBC-odbc: ODBC driver for HDBC.

  • magic 1.0.7. Uploaded by John Goerzen. magic: Interface to C file/magic library.

  • ListLike 1.0.1. Uploaded by John Goerzen. ListLike: Generic support for list-like structures.

  • LDAP 0.6.3. Uploaded by John Goerzen. LDAP: Haskell binding for C LDAP API.

  • hg-buildpackage 1.0.4. Uploaded by John Goerzen. hg-buildpackage: Tools to help manage Debian packages with Mercurial.

  • HDBC 1.1.4. Uploaded by John Goerzen. HDBC: Haskell Database Connectivity.

  • HSH 1.2.5. Uploaded by John Goerzen. HSH: Library to mix shell scripting with Haskell programs.

  • editline 0.1. Uploaded by Judah Jacobson. editline: Bindings to the editline library (libedit)..

  • pureMD5 0.1.1. Uploaded by Thomas DuBuisson. pureMD5: MD5 implementations that should become part of a ByteString Crypto package..

  • hmp3 1.4. Uploaded by Donald Stewart. hmp3: An ncurses mp3 player written in Haskell.

  • binary-strict 0.2.1. Uploaded by Adam Langley. binary-strict: Binary deserialisation using strict ByteStrings.

  • GLFW 0.3. Uploaded by Paul Liu. GLFW: A binding for GLFW, An OpenGL Framework.

  • hbeat 0.1.1. Uploaded by Tim Docker. hbeat: A simple step sequencer GUI..

  • hackage2hwn 0.2.1. Uploaded by Donald Stewart. hackage2hwn: Convert hackage = Hackage RSS feeds to Haskell Weekly News format.

  • tagsoup 0.4. Uploaded by Neil Mitchell. tagsoup: Parsing and extracting information from (possibly malformed) HTML documents.

  • HaXml 1.19.2. Uploaded by Malcolm Wallace. HaXml: Utilities for manipulating XML documents.

  • Emping 0.3.1. Uploaded by Hans VanThiel. Emping: derives heuristic rules from nominal data.

  • hbeat 0.1. Uploaded by Tim Docker. hbeat: A simple step sequencer GUI..

  • Imlib 0.1.1. Uploaded by Cale Gibbard. Imlib: Added by CaleGibbard, Sun Jan 13 22:26:59 PST 2008..

  • pcre-light 0.2. Uploaded by Donald Stewart. pcre-light: A small, efficient and portable regex library for Perl 5 compatible regular expressions.

  • YamlReference 0.8. Uploaded by Oren BenKiki. YamlReference: YAML reference implementation.

  • ContArrow 0.0.4. Uploaded by Evgeny Jukov. ContArrow: Control.Arrow.Transformer.Cont.

  • ContArrow 0.0.3. Uploaded by Evgeny Jukov. ContArrow: Control.Arrow.Transformer.Cont.

  • mkcabal 0.4. Uploaded by Donald Stewart. mkcabal: Generate cabal files for a Haskell project.

  • pcre-light 0.1. Uploaded by Donald Stewart. pcre-light: A lightweight binding to PCRE.

  • YamlReference 0.7. Uploaded by Oren BenKiki. YamlReference: YAML reference implementation.

  • Crypto 4.1.0. Uploaded by Dominic Steinitz. Crypto: DES, Blowfish, AES, TEA, SHA1, MD5, RSA, BubbleBabble, Hexdump, Support for Word128, Word192 and Word256 and Beyond, PKCS5 Padding, Various Encryption Modes e.g. Cipher Block Chaining all in one package..

  • containers 0.1.0.1. Uploaded by Ross Paterson. containers: Assorted concrete container types.

  • ConfigFile 1.0.4. Uploaded by John Goerzen. ConfigFile: Configuration file reading & writing.

  • MissingH 1.0.0. Uploaded by John Goerzen. MissingH: Large utility library.

  • hslogger 1.0.4. Uploaded by John Goerzen. hslogger: Versatile logging framework.

  • hslogger 1.0.2. Uploaded by John Goerzen. hslogger: Versatile logging framework.

  • BerkeleyDB 0.3. Uploaded by John McCall. BerkeleyDB: Bindings for Berkeley DB v1.x.

  • BitSyntax 0.3.2. Uploaded by Adam Langley. BitSyntax: A module to aid in the (de)serialisation of binary data.

  • Hashell 0.15. Uploaded by Gwern Branwen. Hashell: Simple shell written in Haskell.

  • binary-strict 0.2. Uploaded by Adam Langley. binary-strict: Binary deserialisation using strict ByteStrings.

  • Shu-thing 1.1. Uploaded by Gwern Branwen. Shu-thing: A vector shooter game.

  • zlib 0.4.0.2. Uploaded by Duncan Coutts. zlib: Compression and decompression in the gzip and zlib formats.

  • i18n 0.2. Uploaded by Eugene Grigoriev. i18n: Internationalization for Haskell.

  • pandoc 0.46. Uploaded by John MacFarlane. pandoc: Conversion between markup formats.

  • hscolour 1.9. Uploaded by Malcolm Wallace. hscolour: Colourise Haskell code..

  • regex-pcre 0.94.1. Uploaded by ChrisKuklewicz. regex-pcre: Replaces/Enhances Text.Regex.

  • regex-posix 0.93.1. Uploaded by Chris Kuklewicz. regex-posix: Replaces/Enhances Text.Regex.

  • regex-base 0.93.1. Uploaded by Chris Kuklewicz. regex-base: Replaces/Enhances Text.Regex.

  • regex-compat 0.91. Uploaded by Chris Kuklewicz. regex-compat: Replaces/Enhances Text.Regex.

  • haddock 2.0.0.0. Uploaded by David Waern. haddock: Added by DavidWaern

Blog noise

Haskell news from the blogosphere.

Quotes of the Week

  • Peter: I hardly know Haskell, but I can already write some code much faster and easier than I could do in C/C++ (and I've been programming 2 decades in that language)
  • Miguel Mitrofanov: Since NaN /= NaN, I think, we should decipher 'NaN' as 'Not a NaN'
  • Achim Schneider: The essence of non-strictness, though, is another kind of story. Like a golem plowing half of the country until you remember that you placed him a bit absent-mindedly into your backyard and said 'plow', that still won't plow mountains. The essence of strictness is easy, though: get stuck on a stone, fall over and continue moving until you break.
  • monochrom: OCaml tells you 'map f xs is bad because it takes O(n) space'. Haskell tells you 'map f xs' is good because it takes O(1) space
  • ddarius: It says *right on the box* that it it's intended for *both* research and applications.
  • Clifford Beshers: Why Haskell? Medical researchers announced today that MRI studies reveal that the structure of the human brain is significantly different in adolescence than adulthood.
  • Larry O'Brien: I really had a hard time refactoring my Ruby into a packrat parser. This was due, in no small part, because of the difficulty in understanding the types being built-up in the data structure. The paper, in explicitly-typed Haskell: clear as a bell. My code's behavior on unit tests: virtually indistinguishable from random.
  • SuperGrade: Haskell kind of herds you into functional programming. There are advantages to this manner of coding, and I'm getting to thinking you should attempt code this way almost all of the time, regardless of language.
  • Berlin Brown: Haskell is readable, fast, and expressive. I like it.
  • Yaakov Nemoy: Changing the type of a function in Python will lead to strange runtime errors that take some work to debug, whereas, when I tinker with a program in Haskell, I already know it will work once it compiles.
  • Michael Reid: Learning Haskell has completely reversed my feeling that static typing is an old outdated idea. The power of Haskell's type system makes it feel like you are programming in a dynamic language to some degree, yet all of it is type-checked, and that is just *really* cool.
  • weavejester: I've come across many parser generators that are a dream to work with in comparison to lex and yacc. The best one I've found so far is Haskell's Parsec.
  • David Roundy: What's the good of having a haskell-programming computational linguist on board if we can't get static compile-time guarantees of grammatical correctness?
  • Bulat Ziganshin: When FP just pass all the functions and data required for specialization of generic algorithm, OOP provides interfaces, virtual functions, anonymous classes, delegates and lots of other interesting ways to hide the fact of lack of first-class functions :)
  • [Douglas] Adams: was interested in computing --- I think his reaction to being told about functional programming was to wonder what non-functional programming might be.
  • ezekiel: I find Haskell to be like Lisp and APL and Python all put together in a way that leads me quickly to a solid result. Other languages work, but the road to the result is bumpier.
  • AlanYx: I've found that Haskell's uber-strong, static type system does help me be productive, because it increases the class of bugs that can be found at compile time, forces thinking at a higher level, and can help avoid edits to existing code breaking things elsewhere in the code
  • anonymous: Closures in today's world are a 'language geek' feature. Unless done extremely carefully and in a way that supports the various skill levels of developers, they end up being unusable and unsupportable by anything less than computer language savants. In their inherent obscurity and complexity, 'language geek' style closures are about as anti-Java as you can get.
  • anonymous: I work in a Smalltalk shop, where we extend and maintain an application that has been around over a decade. During the maintenance part of our job, it would be really nice to have type declarations on variables. For maintenance, the more dependable information we have, the better! The fewer things that can escape as runtime exceptions, the better!
  • consultant barbie: Languages are hard. Let's write web frameworks and go shopping!

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 http://code.haskell.org/~dons/code/hwn/

Haskell Weekly News: January 05, 2008

Submitted by dons on Tue, 01/08/2008 - 10:53pm.

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

This HWN features new releases of the GHC and nhc98 Haskell compilers, a pre-release of darcs 2.0, several new user groups formed, and of course, more than 100 updated and new libraries

Announcements

GHC 6.8.2. The GHC Team announced the release of GHC 6.8.2, featuring optimisation improvements, improvements to ghci and fixes to standalone deriving.

nhc98 1.2 released. Malcolm Wallace announced the release of nhc98 1.2. 1.20 is a refreshed release with many of the current core library packages included, and a variety of small bugfixes since the last release. It successfully compiles and runs more programs from the nobench suite than jhc, hbc, Hugs, or yhc. It generates an interpreted bytecode that, on the whole runs faster than that generated by Hugs or yhc, and in many cases is also faster than ghci. Although nhc98 is written in Haskell, you don't need an existing Haskell compiler on your platform to build nhc98 - a C compiler will do. Hence, it is portable to almost any unix-like machine with a 32-bit compatibility mode. Many useful build tools come included: hmake (the inspiration for ghc --make), hi (interactive read-eval-print, like Hugs or ghci), cpphs (Haskell-aware replacement for cpp) and hsc2hs (preprocessor for FFI code)

darcs 2.0.0pre2. David Roundy announced the availability of the second prerelease of darcs two, darcs 2.0.0pre2. This release fixes several severe performance bugs that were present in the first prerelease. These issues were identified and fixed thanks to the helpful testing of Simon Marlow and Peter Rockai. We also added support for compilation under ghc 6.4, so even more users should be able to test this release.

The Monad.Reader Issue 9: SoC special. Wouter Swierstra announced a new issue of The Monad.Reader, a 'Summer of Code Special' - it consists of three articles from student participants of Google's Summer of Code, describing the projects they worked on.

What's happening with Haskell? The 13th HCAR. Andres Loeh announced the 13th edition of the Haskell Communities and Activities Report

Teach yourself gtk2hs in 21 hours. Hans van Thiel announced a Gtk2Hs basics tutorial, based on the Tony Gale and Ian Main GTK+2.0 tutorial, is now available for review and comment.

Minimalistic Haskell blog framework. Paul Brown announced a lightweight, experimental blog publishing application, perpubplat

atom. Tom Hawkins announced the release of atom 2007.12; atom is a domain-specific language embedded in Haskell for describing real-time control applications

Hackage

New and updated libraries in the Hackage library database.
  • bytestring 0.9.0.4. Uploaded by DonaldStewart. bytestring: Fast, packed, strict and lazy byte arrays with a list interface.

  • uuagc 0.9.5. Uploaded by ArieMiddelkoop. uuagc: Attribute Grammar System of Universiteit Utrecht.

  • uulib 0.9.5. Uploaded by ArieMiddelkoop. uulib: Haskell Utrecht Tools Library.

  • llvm 0.0.2. Uploaded by BryanOSullivan. llvm: Bindings to the LLVM compiler toolkit.

  • HDBC-sqlite3 1.1.3.1. Uploaded by JohnGoerzen. HDBC-sqlite3: Sqlite v3 driver for HDBC.

  • HDBC-odbc 1.1.3.1. Uploaded by JohnGoerzen. HDBC-odbc: ODBC driver for HDBC.

  • dimensional 0.7.2. Uploaded by BjornBuckwalter. dimensional: Statically checked physical dimensions..

  • uulib 0.9.5. Uploaded by ArieMiddelkoop. uulib: Haskell Utrecht Tools Library.

  • hsc3 0.1. Uploaded by RohanDrape. hsc3: Haskell SuperCollider.

  • hosc 0.1. Uploaded by RohanDrape. hosc: Haskell Open Sound Control.

  • GLFW 0.2. Uploaded by PaulLiu. GLFW: A binding for GLFW, An OpenGL Framework.

  • control-timeout 0.1. Uploaded by AdamLangley. control-timeout: Timeout handling.

  • hiccup 0.35. Uploaded by KyleConsalus. hiccup: Relatively efficient Tcl interpreter with support for basic operations.

  • phooey 2.0. Uploaded by ConalElliott. phooey: Functional user interfaces.

  • reactive 0.0. Uploaded by ConalElliott. reactive: Simple foundation for functional reactive programming.

  • phooey 1.4. Uploaded by ConalElliott. phooey: Functional user interfaces.

  • hburg 1.1.1. Uploaded by IgorBohm. hburg: Haskell Bottom Up Rewrite Generator.

  • hinotify 0.2. Uploaded by LennartKolmodin. hinotify: Haskell binding to INotify.

  • cabal-rpm 0.3.3. Uploaded by BryanOSullivan. cabal-rpm: RPM package builder for Haskell Cabal source packages..

  • codec-libevent 0.1. Uploaded by AdamLangley. codec-libevent: Cross-platform structure serialisation.

  • irc 0.4. Uploaded by TrevorElliott. irc: A small library for parsing IRC messages..

  • dlist 0.4. Uploaded by DonaldStewart. dlist: Differences lists.

  • AutoForms 0.4.0. Uploaded by MadsLindstroem. AutoForms: GUI library based upon generic programming (SYB3).

  • bktrees 0.2.1. Uploaded by JosefSvenningsson. bktrees: A set data structure with approximate searching.

  • bktrees 0.2. Uploaded by JosefSvenningsson. bktrees: A set data structure with approximate searching.

  • binary-strict 0.1. Uploaded by AdamLangley. binary-strict: Binary deserialisation using strict ByteStrings.

  • haddock 0.9. Uploaded by SimonMarlow. haddock: Haddock is a documentation-generation tool for Haskell libraries.

  • bytestring-mmap 0.2.0. Uploaded by DonaldStewart. bytestring-mmap: mmap support for strict ByteStrings.

  • bytestring 0.9.0.3. Uploaded by DonaldStewart. bytestring: Fast, packed, strict and lazy byte arrays with a list interface.

  • hiccup 0.3. Uploaded by KyleConsalus. hiccup: Added by KyleConsalus, Wed Dec 19 17:00:42 PST 2007..

  • cedict 0.1.1. Uploaded by JasonDusek. cedict: Convenient Chinese character lookup..

  • TypeCompose 0.3. Uploaded by ConalElliott. TypeCompose: Type composition classes & instances.

  • bytestring-mmap 0.1.2. Uploaded by DonaldStewart. bytestring-mmap: mmap support for strict ByteStrings.

  • bytestring 0.9.0.2. Uploaded by DonaldStewart. bytestring: Fast, packed, strict and lazy byte arrays with a list interface.

  • bytestring-mmap 0.1.1. Uploaded by DonaldStewart. bytestring-mmap: mmap support for strict ByteStrings.

  • mkcabal 0.3. Uploaded by DonaldStewart. mkcabal: Generate cabal files for a Haskell project.

  • terminfo 0.1. Uploaded by Judah Jacobson. terminfo: Haskell bindings to the terminfo library..

  • Cabal 1.2.3.0. Uploaded by Duncan Coutts. Cabal: A framework for packaging Haskell software.

  • hxt 7.4. Uploaded by UweSchmidt. hxt: A collection of tools for processing XML with Haskell..

  • X11 1.4.1. Uploaded by Spencer Janssen. X11: A binding to the X11 graphics library.

  • dataenc 0.10.1. Uploaded by Magnus Therning. dataenc: Data encoding library currently providing Uuencode, Base64, Base64Url, Base32, Base32Hex, and Base16..

  • bytestringreadp 0.1. Uploaded by Gracjan Polak. bytestringreadp: A ReadP style parser library for ByteString.

  • encoding 0.3. Uploaded by HenningGuenther. encoding: A library for various character encodings.

  • hslua 0.2. Uploaded by Gracjan Polak. hslua: A Lua language interpreter embedding in Haskell.

  • xmonad-contrib 0.5. Uploaded by Spencer Janssen. xmonad-contrib: Third party extensions for xmonad.

  • xmonad 0.5. Uploaded by SpencerJanssen. xmonad: A tiling window manager.

  • pandoc 0.45. Uploaded by John MacFarlane. pandoc: Conversion between markup formats.

  • markov-chain 0.0.1. Uploaded by Henning Thielemann. markov-chain: Markov Chains for generating random sequences with a user definable behaviour..

  • parsedate 3000.0.0. Uploaded by Bjorn Bringert. parsedate: Data and time parsing for CalendarTime.

  • hackage2hwn 0.1. Uploaded by Don Stewart. hackage2hwn: Convert hackage = Hackage RSS feeds to Haskell Weekly News format.

  • hask-home 2007.12.6. Uploaded by BjornBringert. hask-home: Generate homepages for cabal packages.

  • hmarkup 3000.0.1. Uploaded by BjornBringert. hmarkup: Simple wikitext-like markup format implementation..

  • hspread 0.2. Uploaded by AndreaVezzosi. hspread: A client library for the spread toolkit.

  • pcap 0.4.2. Uploaded by BryanOSullivan. pcap: A system-independent interface for user-level packet capture.

  • hogg 0.3.0. Uploaded by ConradParker. hogg: Library and tools to manipulate the Ogg container format.

  • Finance-Quote-Yahoo 0.4.1. Uploaded by BradClawsie. Finance-Quote-Yahoo: Obtain quote data from finance.yahoo.com.

  • Monadius 0.9.20071204. Uploaded by GwernBranwen. Monadius: 2-D arcade scroller.

  • Shu-thing 1.0.20071203. Uploaded by GwernBranwen. Shu-thing: A vector shooter game.

  • hmatrix 0.1.1.0. Uploaded by AlbertoRuiz. hmatrix: Linear algebra and numerical computations.

  • HTTP 3001.0.3. Uploaded by BjornBringert. HTTP: Added by BjornBringert, Fri Nov 30 14:50:55 PST 2007..

  • rss 3000.0.1. Uploaded by BjornBringert. rss: A library for generating RSS 2.0 feeds..

  • haxr 3000.0.1. Uploaded by BjornBringert. haxr: XML-RPC client and server library..

  • fitsio 0.1. Uploaded by EricSessoms. fitsio: A library for reading and writing data files in the FITS data format..

  • YamlReference 0.6. Uploaded by Oren Ben Kiki. YamlReference, YAML reference implementation

  • LambdaShell 0.9.1. Uploaded by Robert Dockins. LambdaShell, simple shell for evaluating lambda expressions

  • Shellac 0.9.1. Uploaded by Robert Dockins. Shellac, a framework for creating shell envinronments

  • EdisonCore 1.2.1.1. Uploaded by Robert Dockins. EdisonCore, a library of efficent, purely-functional data structures (Core Implementations)

  • hmatrix 0.1.0.0. Uploaded by Alberto Ruiz. hmatrix, linear algebra and numerical computations

  • strict-concurrency 0.1. Uploaded by Don Stewart. strict-concurrency, strict concurrency abstractions

  • X11 1.4.0. Uploaded by Don Stewart. X11, binding to the X11 graphics library

  • safecopy 0.3. Uploaded by David Himmelstrup. safecopy, binary serialization with version control

  • HaXml 1.13.3. Uploaded by Malcolm Wallace. HaXml, utilities for manipulating XML documents

  • c2hs 0.15.1. Uploaded by Duncan Coutts. c2hs, C->Haskell Interface Generator

  • calc 0.1. Uploaded by Austin Seipp. calc, small compiler for arithmetic expressions.

  • miniplex 0.2.1. Uploaded by Lukas Mai. miniplex, simple 1-to-N interprocess communication

  • sat 1.1.1. Uploaded by Andrii Zvorygin. sat, CNF SATisfier

  • dimensional 0.7.1. Uploaded by Bjorn Buckwalter. dimensional, statically checked physical dimensions

  • hxt 7.4. Uploaded by Uwe Schmidt. hxt, collection of tools for processing XML with Haskell.

  • dlist 0.3.2. Uploaded by Don Stewart. dlist, difference lists. A list type supporting fast append.

  • mkcabal 0.2. Uploaded by Don Stewart. mkcabal, generate cabal files for a Haskell project

  • Chart 0.5. Uploaded by Tim Docker. Chart, a library for generating 2D Charts and Plots

  • MaybeT 0.1.1. Uploaded by Don Stewart. MaybeT, MaybeT monad transformer

  • regex-pcre 0.93. Uploaded by Chris Kuklewicz. regex-pcre, replaces Text.Regex

  • fixpoint 0.1. Uploaded by Roman Leshchinskiy. fixpoint, data types as fixpoints

  • ChasingBottoms 1.2.2. Uploaded by Nils Anders Danielsson. ChasingBottoms, support for testing partial and infinite values

  • GrowlNotify 0.3. Uploaded by Nicholas Burlett. GrowlNotify, notification utility for Growl

  • pcap 0.4.1. Uploaded by Bryan OSullivan. pcap, a system-independent interface for user-level packet capture

  • bencode 0.3. Uploaded by David Himmelstrup. bencode, parser and printer for bencoded data.

  • stream-fusion 0.1.1. Uploaded by Don Stewart. stream-fusion, provides the standard Haskell list library reimplemented to allow stream fusion. This should in general provide faster list operations, and faster code for list-heavy programs.

  • HTTP 3001.0.2. Uploaded by Bjorn Bringert. HTTP, library for client-side HTTP

  • X11-xft 0.2. Uploaded by Clemens Fruhwirth. X11-xft, bindings to the Xft, X Free Type interface library, and some Xrender parts

  • GrowlNotify 0.1. Uploaded by Nicholas Burlett. GrowlNotify, notification utility for Growl.

  • HsHaruPDF 0.0.0. Uploaded by Audrey Tang. HsHaruPDF, Haskell binding to libharu

  • unicode-normalization 0.1. Uploaded by Reinier Lamers. unicode-normalization, Unicode normalization using the ICU library

  • uniplate 1.0.1. Uploaded by Neil Mitchell. uniplate, uniform type generic traversals

  • lax-0.0.0. Uploaded by Wolfgang Jeltsch. lax, Lax arrows are variants of other arrows which are ?less strict? than the original arrows. They can be used, for example, to produce I/O fixpoints in situations where fixIO would fail.

  • fastcgi 3001.0.1. Uploaded by Bjorn Bringert. fastcgi, a Haskell library for writing FastCGI programs

Conference roundup

New user groups

Jobs

Prototyping. Peter Verswyvelen announced a job using Haskell for prototyping computer animation and games

Blog noise

Haskell news from the blogosphere.

Quotes of the Week

  • Conal: For me, the heart of functional programming is exactly this separation between model and presentation. The former is naturally functional and compositional, while the latter is often imperative/sequential and not-so-compositional. IO belongs with the latter.
  • ddarius: has programmed too much in Haskell. He now produces code that -compiles- and works the first time
  • disspy: If all you know is C, everything begins to look like a segmentation fault.
  • markedtrees: (On the city of Haskell) Ah yes, Haskell. Where all the types are strong, all the men carry arrows, and all the children are above average.
  • ola-bini: Haskell's type system is really nice, for example, but OCaml's really feels like half of it exists just to cover up holes in the other half, I'm half way into Erlang, but for several reasons the language feels very primitive.
  • so1i.warazd: I'm more and more comfortable spending time with Haskell these days. Haskell may not be the next thing, but whatever the next big thing is, it's probably going to have Haskelly fingerprints all over it?..
  • sylvan: think that the perceived difficulty in using purely functional programming is probably a bit exaggerated these days, as all it means is 'we're explicit about where side effects occur'
  • falvo: I really wish that someone would come up with a type-safe replacement for the likes of Python. Oh, wait, it's called Haskell! Unfortunately, I'm forbidden from using Haskell at work. Sigh
  • Tyler Spaulding: eventually even 'simple' programs will nned multiple threads. Does that mean developers will suddenly flock to Haskell? Again, no. Language designers are well aware of the situation. Sun and Microsoft are constantly working on improving the Java and .NET frameworks. And by the time the average programmer needs it, both will have plenty of support for easy threading
  • ricky clarkson: Haskell is full of Aha and Hah moments for me
  • five9a2: Concurrency aside, I find it common to write Haskell code that is as fast as C. It is true that for most things, the C can be tweaked to go a bit faster, but that tweaking needs to be done on a case-by-case basis. In Haskell, it is easier to compose optimized components. Better algorithms beat an optimized compiler any day and using the best algorithms everywhere in C code tends to be painful, error-prone, and usually disparaged as premature optimization.
  • Jeff Moser: It's been this fear of skills rot that has pushed me to look into Lisp, Haskell, F#, Erlang, and other languages to avoid The Blub Paradox.
  • NFJS 2008 predictions: If you've never programmed in Haskell, now's a good time to learn, because those concepts and syntax are fast making their way towards you...
  • The honey monster: With the advent of multi-core CPUs and the promise of many core processors in the near future it occurrs to me that my interest in functional programming languages could not of happened at a more opportune time. It is not that imperative programming languages are not as capable, merely that functional programming languages seem to be more natural fit

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 http://code.haskell.org/~dons/code/hwn/

Haskell Weekly News: November 11, 2007

Submitted by dons on Sun, 11/11/2007 - 8:14pm.

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

This week sees the release of GHC 6.8.1, to rave reviews. There have been many reports of large performance improvements for Haskell programs, from small to large production systems. Congratulations to the GHC team for such a great release!

Announcements

GHC 6.8.1. Ian Lynagh announced the release of GHC 6.8.1, a new major release of GHC. There have been a number of significant changes since the last major release, including: Haskell Program Coverage support, the GHCi debugger, pointer tagging in the runtime (with up to 10-15% speedups), constructor specialisation, improved optimisations and much more! The full release notes are available.

Gtk2Hs 0.9.12.1. Duncan Coutts announced version 0.9.12.1 of gtk2hs is now available. gtk2hs is the standard graphics library for Haskell.

Lazy SmallCheck 0.1. Matthew Naylor announced Lazy SmallCheck 0.1, a library for exhaustive, demand-driven testing of Haskell programs.

HDBC 1.1.3. John Goerzen announced new releases of HDBC, the Haskell database connectivity kit, and its associated backends (for sqlite3, postgresql, odbc).

xmobar. Andrea Rossato announced the release of Xmobar-0.8, a minimalistic, text based, status bar. It was specifically designed to work with the XMonad Window Manager.

Flymake Haskell. Daisuke Ikegami announced flymake haskell, emacs bindings for interactive Haskell editing.

network bytestring. Johan Tibbel announced, strict ByteString versions of the recv/send family of functions for efficient network IO.

ByteString search. Bryan O'Sullivan announced a cabalised version of the fast Boyer-Moore and Knuth-Morris-Pratt string search code for ByteStrings

Generating free theorems. Janis Voigtlaender announced an improved version of the online and offline free theorems generator for Haskell

hslogger4j 0.1.1. Bjorn Buckwalter announced Hslogger4j, which provides handlers for hslogger (John Goerzen's Haskell logging framework) that are compatible with log4j's XMLLayout.

Infinity 0.3. Austin Seipp announced `infinity', an IRC bot in Haskell

hswm. Remi Turk announced the first and last release of hswm, a Haskell window manager.

Hackage

This week's new libraries in the Hackage library database.
  • xmobar-0.8. Uploaded by Andrea Rossato. xmobar, a minimalistic text based status bar

  • hsSqlite3-0.0.4. Uploaded by Evgeny Jukov. hsSqlite3, bindings for Sqlite3

  • cabal-rpm-0.3.2. Uploaded by Bryan OSullivan. cabal-rpm turns Haskell Cabal source packages into source and binary RPM packages.

  • selenium-0.2.2. 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.

  • HPDF-1.3. Uploaded by alpheccar. HPDF. A PDF library with support for several pages, page transitions, outlines, annotations, compression, colors, shapes, patterns, jpegs, fonts, typesetting ...

  • FileManip-0.3.1. Uploaded by Bryan OSullivan. FileManip, a Haskell library for working with files and directories. Includes code for pattern matching, finding files, modifying file contents, and more.

  • stringsearch-0.2. Uploaded by Bryan OSullivan. stringsearch, fast search of ByteStrings.

  • nano-md5-0.1. Uploaded by Don Stewart. nano-md5, ByteString bindings to OpenSSL.

  • denominate-0.4.1. Uploaded by Calvin Smith. denominate provides a main program for performing bulk file and directory renaming, using a built-in filename converter or user-defined converters.

  • ContArrow 0.0.2. Uploaded by Evgeny Jukov. ContArrow, Control.Arrow.Transformer.Cont

  • state 0.0.2. Uploaded by Evgeny Jukov. state. State.

  • infinity 0.3. Uploaded by Austin Seipp. infinity, a tiny, pluggable irc bot.

  • unix-compat 0.1.2.1. Uploaded by Duncan Coutts. unix-compat, portable implementations of parts of the unix package.

  • Ranged-sets 0.1.1. Uploaded by Paul Johnson. Ranged-sets. A ranged set is an ordered list of ranges.

  • IFS 0.1.1. Uploaded by alpheccar. IFS, a library to describe IFS and generate PPM pictures from the descriptions

  • bktrees 0.1.3. 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.

  • pqc 0.2. Uploaded by Don Stewart. pqc, a parallel batch driver for QuickCheck

  • strict 0.2. Uploaded by Don Stewart. strict, strict data types.

  • HsSVN 0.2. Uploaded by PHO. HsSVN, (Part of) Subversion binding for Haskell

  • HsHyperEstraier 0.2. 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.

  • HsOpenSSL 0.3.1. 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.

  • Finance-Quote-Yahoo 0.4. Uploaded by Brad Clawsie. Finance-Quote-Yahoo, obtain quote data from finance.yahoo.com

  • LRU 0.1.1. Uploaded by Adam Langley. LRU, an LRU data structure

  • base 3.0. Uploaded by Ross Paterson. base, the Prelude and its support libraries, and a large collection of useful libraries ranging from data structures to parsing combinators and debugging utilities.

  • regex-posix 0.72.0.2. Uploaded by Duncan Coutts. regex-posix, posix regex support.

  • xhtml 3000.0.2.1. Uploaded by Bjorn Bringert. xhtml, combinators for producing XHTML 1.0, including the Strict, Transitional and Frameset variants.

  • Win32 2.1.0.0. Uploaded by Esa Ilari Vuokko. Win32, a binding to part of the Win32 library

  • unix 2.2.0.0. Uploaded by Ross Paterson. unix, POSIX functionality

  • time 1.1.2.0. Uploaded by Ross Paterson. time, time handling.

  • template-haskell 2.2.0.0. Uploaded by Ross Paterson. template-haskell, support for manipulating Haskell syntax trees

  • stm 2.1.1.0. Uploaded by Ross Paterson. stm, software transational memory

  • regex-compat 0.71.0.1. Uploaded by Ross Paterson. regex-compat, backwards compatible regex support

  • regex-base 0.72.0.1. Uploaded by Ross Paterson. regex-base, regex support.

  • readline 1.0.1.0. Uploaded by Ross Paterson. readline, an interface to the GNU readline library

  • random 1.0.0.0. Uploaded by Ross Paterson. random, random number generation

  • QuickCheck 1.1.0.0. Uploaded by Ross Paterson. QuickCheck, automatic testing of Haskell programs

  • process 1.0.0.0. Uploaded by Ross Paterson. process, jobs and processes

  • pretty 1.0.0.0. Uploaded by Ross Paterson. pretty, pretty printing library.

  • parsec 2.1.0.0. Uploaded by Ross Paterson. parsec, monadic parser combinators.

  • parallel 1.0.0.0. Uploaded by Ross Paterson. parallel, support for parallel programming

  • packedstring 0.1.0.0. Uploaded by Ross Paterson. packedstring, packed strings

  • OpenGL 2.2.1.1. Uploaded by Ross Paterson. OpenGL, binding for the OpenGL graphics system

  • OpenAL 1.3.1.1. Uploaded by Ross Paterson. OpenAL, binding to the OpenAL cross-platform 3D audio API.

  • old-time 1.0.0.0. Uploaded by Ross Paterson. old-time, time library.

  • alex 2.2. Uploaded by Simon Marlow. alex is a tool for generating lexical analysers in Haskell

  • Cabal 1.2.2.0. Uploaded by Duncan Coutts. Cabal is the framework for packaging Haskell software

  • HaXml 1.19.1. Uploaded by Malcolm Wallace. HaXml, Utilities for manipulating XML documents

  • HDBC-odbc 1.1.3.0. Uploaded by John Goerzen. HDBC-odbc, ODBC driver for HDBC

  • HDBC-postgresql 1.1.3.0. Uploaded by John Goerzen. HDBC-postgresql is a PostgreSQL driver for HDBC

  • HDBC-sqlite3 1.1.3.0. Uploaded by John Goerzen. HDBC-sqlite3 is a Sqlite v3 driver for HDBC

  • HDBC 1.1.3. Uploaded by John Goerzen. HDBC is a Haskell Database library

  • X11 1.3.0. Uploaded by Don Stewart. X11 is a library of bindings to the X11 libraries and server

  • HsOpenSSL 0.3. Uploaded by Masatake Daimon. HsOpenSSL, (Part of) OpenSSL binding for Haskell

  • Imlib 0.1. Uploaded by Cale Gibbard. Imlib, Haskell binding for Imlib 2

  • Stream 0.2.2. Uploaded by Wouter Swierstra. Stream, a library for manipulating infinite lists.

  • sat 1.0. Uploaded by AndriiZvorygin. sat, CNF SATisfier

  • torrent 2007.10.27. Uploaded by David Himmelstrup. torrent, BitTorrent file parser

  • bencode 0.2. Uploaded by David Himmelstrup. bencode, Parser and printer for bencoded data.

  • SDL 0.5.1. Uploaded by David Himmelstrup. SDL, binding to libSDL

  • NGrams 1.0. Uploaded by Justin Bailey. ngrams, Simple application for calculating n-grams using Google

Discussion

Bootstrapping Haskell. Andrew Copping wondered how the first Haskell compilers were bootstrapped, leading to some interesting historical details.

GHC 6.8 performance. Dan Piponi asked about Haskell performance for low level array manipulation, with some excellent speedups produced by GHC 6.8

Jobs

Software Development Engineer at MSR. Don Syme announced that the F Sharp team is hiring! We have two positions open right now. The first is a software development engineer specializing in Visual Studio and libraries. The second Post Calendar is a software development engineer

PhD position at Chalmers. John Hughes announced that the Functional Programming group at Chalmers is seeking to recruit a PhD student to work on domain-specific languages embedded in Haskell for hardware design, and for programming graphics processors. PhD positions in Sweden are 'real jobs', paying a respectable salary for up to five years.

Blog noise

Haskell news from the blogosphere.

Quotes of the Week

  • faxathisia: Omg! I spent 2 days writing this code and it's worked the first time I run it. Only possible with Haskell :D
  • anonymous: The thing is Haskell isn't suited for young people, whereas the OBJECT model of C++ is
  • sethg: I feel like I still dont understand comonads
  • fnord123: Haskell mainly helps with my C++ template coding when I'm doing money oriented programming
  • Tac-Tics: I get the feeling if all I ever use is the IO monad, someone here will shower me in holy monad fire and cleanse the evil from me.... leaving burn marks all over
  • Anton van Straaten: there's a new movement towards 'functional eating' which involves using a knife and fork (think ML) or chopsticks (Haskell ;) instead of a chainsaw. Its proponents claim that this approach is far superior, but chainsaw fans are skeptical.
  • SamB: what happens in the monad... stays in the monad...
  • Brent Yorgey: Friends don't let friends write in COBOL.
  • Bulat Ziganshin: It's a whole new era in low-level GHC programming

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 http://code.haskell.org/~dons/code/hwn/

md5 :: LazyByteString -> MD5Ctx

Submitted by TomMD on Wed, 11/07/2007 - 7:14pm.

Introduction

In June 2007 I developed a Haskell MD5 implementation intended to be competitive with the 'C' version while still remaining readable. This is a lazy ByteString implementation that makes heavy use of inlining, unboxing and strictness annotations. During this process I [re?]discovered some querks about GHC optimizations and Data.Binary.

The Facts

The first relatively operational version used unsafePerformIO to extract the Word32s from the ByteString. Minor modifications were made to use Data.Binary - this is, after all, an intended use of Data.Binary.

There are four incarnations. First, there is the manual round unrolling and a foldl' version; second, there is a version that uses Data.Binary to extract the Word32s and another that uses unsafePerformIO + Ptr operations.

I standardized the benchmark as the time it takes to hash a 200MB file (seconds) and show performance relative to standard md5sum.

GHC 6.6.1 results

MD5.unroll.unsafe: 5s 6x MD5.unroll.Binary: 10s 12x MD5.rolled.Binary: 45s 58x MD5.rolled.unsafe: 27s 35x md5sum: 0.78s 1x, by def.

UnsafeIO v. Binary

Sadly, changing the (getNthWord32 :: Int -> ByteString -> Word32) function from unsafePerformIO to using Data.Binary made the system take twice as long. It was my hope that Data.Binary was optimized to the same degree as its unsafePerformIO counterpart.

Manual unrolling? This isn't (insert hated language/compiler)

As you can see, the manual unrolling has saved quite a bit of time. Why did unrolling save computation time? I was optimistic in hoping GHC would eliminate unneeded arrays/accesses when unfolding (among other optimizations).

Profiling funkyness

When profiling (-p -auto-all), the 'Binary' version attributes much memory to 'applyMD5Rounds' while the 'unsafe' version attributes more to the ff,gg,hh,ii functions. I am guessing the 'unsafe' version is correct... is the program profile using Data.Binary wrong?

Dreams of SuperO

I am not trying to be Data.Binary/GHC centric. Matter of fact, I look forward to seeing what YHC/supero would do - I just need to be able to get it (and know how to use it).

Observations from core (-ddump-simpl)

I am not patient or knowledgeable enough to know if my understanding of core is correct... that doesn't stop me from interpreting it. It looks like the programs are boxing/unboxing the context between every fold of foldl'! If this is True it explains some of the performance issues. Folding over rounds would cost 64 box/unboxes per block in the rolled version (once for every byte hashed). Folding between each round would cost one box/unbox per block even in the unrolled version (32 million box/unboxings when hashing 200MB). If this is true, it is an obvious place for performance improvement

Minor Alterations With Unexpected Results

Eliminating md5Finalize resulted in a sub 2s run (>2x speed increase, ~3x slower than 'C'). Finalize only runs once (at the end of the hash computation) and is profiled at 1 tick. The only explanation I can see is that md5Finalize use of md5Update complicates the optimization. Inlining md5Update doesn't help and neither does making/using identical copies of md5Update (md5Update') and all sub-functions.

Edit: Benchmark includes nanoMD5 too!

GHC 6.8.0.20070914 Results

Time v. 'C' v. GHC 6.6.1 md5.unroll.unsafe 5s 6x 1x md5.roll.unsafe 17s 21x 0.63x md5.nano 0.9s 1.15x -

So I see a significant improvement in the rolled version thanks to everyone involved in GHC.

Any suggestions on how to close the remaining performance gap would be welcome.

Style

Yes, I know, it looks ugly! I don't feel like cleaning it up much right now. If someone voices that they care, that would be a motivator.

Summary (new from edit)

  • 6x slower than 'c'
  • 5 ish times slower than 'nanoMD5'.
  • Could be twice as fast, assuming I am right about this compiler bug.
  • All Haskell
  • I discovered that it is loading up the entire damn file to memory (new since I last made sure it didn't). So I'll be fixing that stupid bug.

    Footer (for the really curious)

    Hardware: 2.2Ghz AMD x86_64 (Athlon 3400+) with 1GB of memory. Software: Linux 2.6.17, GHC (6.6.1 and 6.8.0 as indicated), md5sum 5.97.

    flags: -O2 -funfolding-use-threshold66 -funfolding-creation-threshold66 -funfolding-update-in-place -fvia-c -optc -funroll-all-loops -optc-ffast-math

    CODE

    EDIT: Now on darcs:

    darcs get http://code.haskell.org/~tommd/pureMD5

  • Haskell Weekly News: October 25, 2007

    Submitted by dons on Thu, 10/25/2007 - 4:57pm.

    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!

    Hackage

    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 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 cabal-devel@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 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 cabal-devel@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 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.

    Libraries

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

    Conference roundup

    Haskell papers presented at the Haskell Workshp, ICFP and CUFP, in Freiburg, Germany.

    Jobs

    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 noise

    Haskell news from the blogosphere.

    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

    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 http://www.cse.unsw.edu.au/~dons/code/hwn

    Haskell Weekly News: September 23, 2007

    Submitted by dons on Sun, 09/23/2007 - 9:12pm.

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

    This episode comes to you live from Portland, Oregon, where the HWN automaton now lives, running on a virtual host at Galois, Inc.

    Announcements

    Cabal 1.2.0 released. Thomas Schilling announced that Cabal version 1.2.0 is available. The major new feature in this release is support for Cabal configurations. This allows package authors to more easily adopt their package descriptions to different system parameters such as operating system, architecture, or compiler. In addition, some optional features may be enabled or disabled explicitly by the package user.

    SparseCheck. Matthew Naylor announced SparseCheck, a library for typed, depth-bounded logic programming in Haskell allowing convenient expression of test-data generators for properties with sparse domains. More information on the home page.

    monadLib 3.3.0. Iavor Diatchki announced a new version of monadLib, adding the identiy transformer, and a family of deriving functions.

    ListLlke. John Goerzen announced ListLike, a generic interface to the various list-like structures in Haskell.

    HaL2: Meeting Haskell in Leipzig 2: videos. Klaus Meier announced that the videos and presentations of the talks given at HaL2 are now online.

    The Monad.Reader: Issue 8. Wouter Swierstra announced that the latest issue of The Monad.Reader is now available. Issue 8 consists of the following two articles: Brent Yorgey on 'Generating Multiset Partitions' and Conrad Parker's 'Type-Level Instant Insanity'

    Haskell mode plugins for Vim. Claus Reinke announced improved haskell mode plugins for vim.

    hstats-0.1. Marshall Beddoe announced a statistical computing module for Haskell.

    HIntegerByInt. Isaac Dupree announced a reimplementation, in Haskell, of the Integer type that Haskell provides in its Prelude. It is designed in mind of being actually usable as the implementation of that type, for compilers. It is also a module that exports a working Integer type. It is in terms of only basic Prelude functions, lists, and Int. It is NOT a purely inductive definition, because Int is much faster than a purely inductive definition would allow, and nevertheless often easier to come by (more portable, license-wise, size-wise, nuisance-wise...) than GMP or other C bignum libraries.

    OzHaskell: Australian Haskell Programmers Group. Manuel Chakravarty started organising OzHaskell, an Australian Haskell user's group.

    Israeli Haskell Programmers Group. B K also seeks to form an Israeli Haskell user's group

    xmonad 0.3. Don Stewart announced the 0.3 release of xmonad. xmonad is a tiling window manager for X. Windows are arranged automatically to tile the screen without gaps or overlap, maximising screen use.

    HPDF 1.0. alpheccar announced version 1.0 of the HPDF library.

    pcap: user-level network packet capture. Bryan O'Sullivan announced the release of pcap 0.3.1

    Gtk2Hs Tutorial. Hans van Thiel announced a port of the GTK2 tutorial by Tony Gail and Ian Main to Haskell's gtk2hs.

    An efficient lazy suffix tree library. Bryan O'Sullivan posted a suffix tree library to hackage. It implements Giegerich and Kurtz's lazy construction algorithm, with a few tweaks for better performance and resource usage.

    Bay Area Functional Programmers. Keith Fahlgren announced the formation of the Bay Area Functional Programmers group. This group is for anyone using or interested in functional programming and functional programming languages, particularly strongly typed languages such as Haskell, OCaml and SML.

    Haskell irc channel reaches 400 users. Don Stewart noticed that, five and a half years after its inception, under the guiding hand of Shae Erisson (aka shapr), the Haskell IRC channel on freenode has reached 400 users!

    Guihaskell and PropLang 0.1. Asumu Takikawa announced the results of his Google Summer of Code project: Guihaskell, a graphical REPL using PropLang and work on PropLang, a GUI library built on Gtk2hs that allows for high level design.

    HAppS-Data 0.9: XML, Pairs, HList, deriveAll. Alex Jacobson announced that the components of HAppS are being released as individual useful packages. HAppS-Data is the first in a series, and provides useful operations on XML data.

    Introduction to proving Haskell code. Tim Newsham put together a small intro lesson on proving Haskell code using quickcheck, equational reasoning and Isabelle/HOL.

    Very Fast Searching of ByteStrings. Chris Kuklewicz announced a Boyer-Moore algorithm implemented for strict and lazy bytestrings (and combinations thereof). It finds all the overlapping instances of the pattern inside the target.

    Infinity 0.1. Austin Seipp announced Infinity v0.1. an IRC bot in the essence of lambdabot; that is, it should be extendable through plugins and plugins should be easy to write, modify and contribute.

    Haskell'

    This section covers the Haskell' standardisation process.

    Libraries

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

    Hackage

    This week's new libraries in the Hackage library database.
    • numbers-2007.9.23. Lennart Augustsson. numbers: instances of the numerical classes for a variety of different numbers.

    • hmp3 1.3. Don Stewart. hmp3: An mp3 player with a curses frontend.

    • utf-string 0.2. Eric Mertens. utf8-string: A UTF8 layer for IO and Strings.

    • hstats 0.1. Marshall Beddoe. hstats: A library of commonly used statistical functions.

    • sparsecheck 0.2. Matthew Naylor. SparseCheck: a library for logic programming in Haskell that allows convenient description of test-data generators.

    • monadLib 3.3.0. Iavor Diatchki. monadLib: A collection of monad transformers.

    • ListLike 1.0.0. John Goerzen. ListLike: Generic support for list-like structures in Haskell.

    • cabal-test 0.1. David Himmelstrup. cabal-test: Cabal-test is a tool for testing cabal projects.

    • HPDF 1.1. alpheccar. HPDF: a PDF library.

    • hxt 7.3. Uwe Schmidt. hxt: The Haskell XML Toolbox.

    • irc 0.1. Trevor Elliott. irc: A small library for parsing IRC messages

    • hsdns 1.0. Peter Simons. hsdns: an asynchronous DNS resolver based on GNU ADNS.

    • streamproc 1.0. Peter Simons. streamproc: Stream Processer Arrow

    • hsemail 1.0. Peter Simons. hsemail: Parsers for the syntax defined in RFC2821 and 2822

    • funcmp 1.0. Peter Simons. funcmp: Functional MetaPost is a Haskell frontend to the MetaPost language

    • cabal-rpm 0.3.1. Bryan OSullivan. cabal-rpm: This package turns Haskell Cabal source packages into source and binary RPM packages.

    • Finance-Quote-Yahoo 0.3. Brad Clawsie. Finance-Quote-Yahoo: Obtain quote data from finance.yahoo.com

    • xmonad 0.3. Spencer Janssen. xmonad: a minimalist tiling window manager for X

    • hint 0.1. Daniel Gorin. hint: an interpreter monad for Haskell expressions based on ghc-api

    • ipprint 0.2. Gleb Alexeyev. ipprint: Tiny helper for pretty-printing values in ghci console

    • pandoc 0.44. John MacFarlane. pandoc: Conversion between markup formats

    • X11-extras 0.3. Spencer Janssen. X11-extras: Missing bindings to the X11 graphics library

    • dsp 0.2. Matthew Donadio. dsp: Digital Signal Processing, Fourier Transform, Filter design, Frequency estimation, Interpolation, Linear Algebra, Polynomials

    • c2hs 0.15.0. Manuel Chakravarty. c2hs: C->Haskell assists in the development of Haskell bindings to C libraries.

    • regex-base 0.92. Chris Kuklewicz. regex-base: Interface API for regex-posix,pcre,parsec,tdfa,dfa

    • soegtk 0.9.12.2. Duncan Coutts. soegtk: SOE api for gtk2hs

    • hsns 0.5.3. Austin Seipp. hsns: a miniature network sniffer

    • anydbm 1.0.4. John Goerzen. anydbm: Interface for DBM-like database systems

    • suffixtree 0.2.1. Bryan O'Sullivan suffixtree: An efficient, lazy suffix tree implementation.

    Discussion

    A regressive view of support for imperative programming in Haskell. Paul Hudak sparked an interesting thread about the effect on the language of rich support for imperative programming.

    Conference roundup

    Jobs

    A top tier Investment bank is looking for a Haskell developer. Kyle McBeath announced that there is a available a permanent position in London, joining a cross asset team. You will be able to use Haskell commercially everyday, be generously compensated and be on the forefront of technology in banking. This is a great opportunity for PhD students or above with proven experience of Haskell programming.

    Postdoctoral Fellowship in Functional Programming. Graham Hutton announced that applications are invited for a 3-year postdoctoral research fellowship in functional programming, to work on the EPSRC-funded project 'Reasoning About Exceptions and Interrupts'.

    Blog noise

    Haskell news from the blogosphere.

    Quotes of the Week

    • nomeata: Haskell is basically Swiss: Small, Efficient, and it is fun to explore the higher parts.
    • Tom Moertel: In the not-too-distant future, perhaps, we might look back in amazement at the days when important security properties were neither free nor guaranteed but expensive and uncertain, underwritten only by the heroic efforts of individual programmers, struggling against impossible odds to achieve inhuman perfection.
    • Adam Turoff: In any case, Simon Peyton Jones is right -- the way forward involves functional programming, whether it means choosing a language like Haskell, or integrating ideas from Haskell into your language of choice.
    • bootslack: Once, around the time of the discovery of fire, there was a large population of people that thought mastering fire would be too difficult so they didn't. The rest of us killed them, cooked them and ate them.

    Code Watch

    Notable new features and bug fixes to the Haskell compilers.

    Thu Sep 6 09:19:48 PDT 2007. Norman Ramsey . massive changes to add a 'zipper' representation of C--

    Tue Aug 14 03:36:23 PDT 2007. Ben Lippmeier. Add graph coloring register allocator. Refactored linear allocator into separate liveness annotation and allocation stages. Added graph coloring allocator, use -fregs-graph to enable. New dump flags are -ddump-asm-native -- output of cmm -> native transform. -ddump-asm-liveness -- code annotated with register liveness info -ddump-asm-coalesce -- output of register move coalescing (this is a separate pass when using the coloring allocator) (this could change in the future) -ddump-asm-regalloc -- code after register allocation -ddump-asm-regalloc-stages -- blocks after each build/spill stage of coloring allocator -ddump-asm-conflicts -- a global register liveness graph in graphviz format The new register allocator will allocate some registers, but it's not quite ready for prime-time yet. The spill code generator needs some work.

    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 cse.unsw.edu.au. The darcs repository is available at darcs get http://www.cse.unsw.edu.au/~dons/code/hwn

    Haskell Weekly News: August 07, 2007

    Submitted by dons on Tue, 08/07/2007 - 3:56am.

    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!

    Announcements

    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.

    Hackage

    This week's new libraries in the Hackage library database.

    Conference roundup

    OSCON. Simon Peyton-Jones gave a series of popular talks about Haskell and functional programming at OSCON, in Portland. Below are collected just some of the posts about Haskell at OSCON.

    Blog noise

    Haskell news from the blogosphere.

    Quotes of the Week

    • 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!

    Code Watch

    Notable new features and bug fixes to the Haskell compilers.

    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.

    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.

    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

    Haskell Weekly News: July 23, 2007

    Submitted by dons on Sun, 07/22/2007 - 10:12pm.

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

    This week, the HWN rises zombie-like from its repository, as your friendly HWN editor tries to get his PhD finished. This bumper issue is filled out with 100 new Haskell blog articles and dozens of new libraries!

    Announcements

    Learn Haskell in 10 minutes. Chris Smith prepared a new tutorial on the basics of Haskell

    Haskell Program Coverage 0.4. Andy Gill announced release 0.4 of Hpc, a tool for Haskell developers. Hpc is a tool-kit to record and display Haskell Program Coverage. Hpc includes tools that instrument Haskell programs to record program coverage, run instrumented programs, and display the coverage information obtained.

    Uniplate 1.0. Neil Mitchell announced Uniplate (formerly known as Play), a library for boilerplate removal requiring only Haskell 98 (for normal use) and optionally multi-parameter type classes (for more advanced features).

    Atom: Hardware description in Haskell. Tom Hawkins announced Atom, a high-level hardware description language embedded in Haskell that compiles conditional term rewriting systems into conventional HDL.

    Catch. Neil Mitchell announced a pattern-match checker for Haskell, named Catch. Do you sometimes encounter the dreaded 'pattern match failure: head' message? Do you have incomplete patterns which sometimes fail? Do you have incomplete patterns which you know don't fail, but still get compiler warnings about them? Would you like to statically ensure the absence of all calls to error? This is what Catch helps ... catch!

    Haskell Communities and Activities Report. Andres Loeh announced that the Haskell Communities and Activities Report is now available, covering the increasingly diverse groups, projects and individuals working on, with, or inspired by Haskell.

    The Reduceron. Matthew Naylor announced the Reduceron, a processor for executing Haskell programs on FPGA with the aim of exploring how custom architectural features can improve the speed in which Haskell functions are evaluated. Being described entirely in Haskell (using Lava), the Reduceron also serves as an interesting application of functional languages to the design of complex control circuits such as processors.

    Data.Derive. Neil Mitchell announced Data.Derive, a library and a tool for deriving instances for Haskell programs. It is designed to work with custom derivations, SYB and Template Haskell mechanisms. The tool requires GHC, but the generated code is portable to all compilers. We see this tool as a competitor to DrIFT.

    Piffle, a packet filter language. Jaap Weel announced Piffle, a compiler for a packet filter language in Haskell: a good example of how Haskell can be used in an application domain (low level computer networking) where people tend to use C for everything, including writing compilers.

    Towards a Programming Language Nirvana. Simon Peyton-Jones appears on video, talking about the Haskell path to programming language Nirvana

    Yi 0.2. Jean-Philippe Bernardy announced the 0.2.0 release of the Yi editor. Yi is a text editor written and extensible in Haskell. The goal of Yi is to provide a flexible, powerful and correct editor core dynamically scriptable in Haskell. Yi si also a Haskell interpreter, very much like emacs is a Lisp interpreter, this makes really easy to dynamically hack, experiment and modify Yi. All tools and goodies written in haskell are also readily available from the editor. This is implemented by binding to the GHC API.

    Foreign.AppleScript. Wouter Swierstra announced a library for compiling and executing AppleScript from Haskell. AppleScript is a scripting language available on all modern Apple computers. It can be used to script most applications on running on MacOS X.

    Asterisk Gateway Interface. Jeremy Shaw uploaded a simple AGI interface to hackage. For more about Asterix, see here.

    Harpy. Dirk Kleeblatt announced Harpy, a library for run-time code generation of x86 machine code. It provides not only a low level interface to code generation operations, but also a convenient domain specific language for machine code fragments, a collection of code generation combinators and a disassembler. Lennart Augustsson has written a series of articles demonstrating its use for fast EDSLs.

    Yaml Reference. Gaal Yahas announced a Haskell (Cabal) package containing the YAML spec productions wrapped in Haskell magic to convert them to an executable parser. The parser is streaming. It isn't intended to serve as a basis for a YAML tool chain; instead it is meant to serve as a reference implementation of the spec.

    Haskell'

    This section covers the Haskell' standardisation process.

    Libraries

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

    Hackage

    This week's new libraries in the Hackage library database.
    • HsOpenSSL-0.1. Masatake Daimon HsOpenSSL 0.1, OpenSSL binding for Haskell

    • Emping-0.3. Hans Van Thiel Emping derives heuristic rules from nominal data

    • parsely-0.1. Samuel Bronson parsely, Typeclasses for parsing monads, and some instances

    • sessions-2007.7.15. Matthew Sackman sessions, Session Types for Haskell

    • CC-delcont-0.1. Dan Doel CC-delcont1, An implementation of multi-prompt delimited continuations

    • gd-3000.3.0. Bjorn Bringert gd, A binding to the GD graphics library

    • StrategyLib-4.0.0.0. Samuel Bronson StrategyLib, Strafunski's StrategyLib

    • ports-0.4.3.2. Don Stewart ports, concurrent and distributed Haskell programming in the IO monad without relying on mutable variables.

    • Finance-Quote-Yahoo-0.1. Brad Clawsie Yahoo-0.1, Obtain quote data from finance.yahoo.com

    • logict-0.2. Dan Doel LogicT, A continuation-based, backtracking, logic programming monad.

    • utf8-string-0.1. Eric Mertens utf8-string, Support for reading and writing UTF8 Strings

    • type-int-0.4. Edward Kmett type-int, Type level 2s- and 16s- complement Integers (positive and negative), Booleans, Ord and Eq

    • cgi-3001.1.5. BjornBringert cgi-3001, a Haskell library for writing CGI programs

    • xmobar-0.6. AndreaRossato xmobar, Xmobar is a minimal status bar for the XMonad Window Manager

    • monad-param-0.0.2. EdwardKmett monad-param, parameterized monads

    • dfsbuild-1.0.1. JohnGoerzen dfsbuild, dfsbuild is the program used to create the Debian From Scratch CD image.

    Conference roundup

    AngloHaskell. is coming up in Cambridge, August 10-11

    Haskell Hackathon 07 II. Hac07 coming up in Freiburg, Oct 5-7

    Blog noise

    Haskell news from the blogosphere.

    Quotes of the Week

    • Smith's Law: Any sufficiently large test suite for a program written in a dynamic language will contain an ad-hoc, informally-specified, bug-ridden, slow, patchy implementation of half of the Haskell type system
    • pshaw: I think the key hook that allowed me to pass interview #2 was that I put the word 'Haskell' on my resume.
    • monochrom: Fear leads to uncertainty. Uncertainty leads to doubt. Doubt leads to theorem proving.
    • Adam Turoff: Let me start by being perfectly clear: if you are a professional programmer, then Haskell is in your future.
    • Apfelmus: In the end, I think that strong types is only one thing that makes Haskell programs work after compilation. The other ones are higher-order functions and *purity*. No type system can achieve what purity offers.

    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.

    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

    Sequence Looking For New Home

    Submitted by jgoerzen on Wed, 07/18/2007 - 5:36am.

    Hi everyone,

    I've been hosting sequence.complete.org on my own server for awhile, but have found that I haven't had time to maintain it lately. I'm looking for someone else that might be willing/able to host and maintain it.

    It's using Drupal on MySQL, though a fairly old version of Drupal at the moment.

    One result of my lack of time is that there has been a problem with spam on the Sequence. I've had to disable new user account requests due to the hundreds of emails to bogus addresses this is generating (and a few to valid addresses that spammers use).

    If you want an account, or would be interested in taking over the site, please send a note to me... jgoerzen on complete ,dot, org.

    -- John