Haskell Weekly News: April 12, 2007

Submitted by dons on Wed, 04/11/2007 - 9:14pm.

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

With the ICFP deadline passed, your Haskell Weekly News returns to its regularly scheduled programming. This week: a truckload of new libraries!

Announcements

ndp-0.1: nested data parallelism in Haskell. Roman Leshchinskiy announced the first release of the NDP package, a library for writing nested data-parallel programs in Haskell, on shared-memory multiprocessors. The NDP library is part of the Data Parallel Haskell project. The paper Data Parallel Haskell: a status report describes the underlying design and go through an example program.

binary 0.3: bigger, better, faster. Lennart Kolmodin announced binary 0.3. The 'binary' package provides efficient serialization of Haskell values to and from lazy ByteStrings. ByteStrings constructed this way may then be written to disk, written to the network, or further processed (e.g. stored in memory directly, or compressed in memory with zlib or bzlib). It's available through Hackage, or via its homepage.

Text.HTML.Chunks. Matthew Sackman announced the Text.HTML.Chunks library, a clone with improvements of the Perl HTML::Chunks module. The main achievement is the use of template-haskell to combine the template into the code at compile time. This then allows for static checking that the variables/fields that the templates are expecting are indeed being provided and that the templates the code is trying to use do indeed exist. The template is then incorporated within the code, removing the dependency on the template.

Phooey 1.0 and GuiTV 0.3. Conal Elliott announced a new version of Phooey, a library for functional user interfaces. Highlights in this release: uses new TypeCompose package, which includes a simple implementation of data-driven computation; new Applicative functor interface; eliminated the catch-all Phooey.hs module. Now import any one of Graphics.UI.Phooey.{Monad ,Applicative,Arrow}; Phooey.Monad has two different styles of output widgets, made by owidget and owidget' and more. Phooey is also used in GuiTV, a library for composable interfaces and 'tangible values'.

The real Monad Transformer. Henning Thielemann announced the real monad transformer! It has been argued that people avoid Haskell because of terms from Category theory like 'Monad'. This problem can now be solved by a wrapper which presents all the internet entirely without monads! Start the parallel Haskell wiki. Of course the tool is written in Haskell, that is, Haskell helps solving problems which only exist because of Haskell. Bug reports and feature requests can be tracked at here.

GHC 6.6.1 Release Candidate. Ian Lynagh announced the Release Candidate phase for GHC 6.6.1. Snapshots beginning with 6.6.20070409 are release candidates for 6.6.1. You can download snapshots from here.

Haskell Cryptographic Library 4.0.3. Dominic Steinitz announced the release of a new version of the Haskell Cryptographic Library based on the crypto proposal. See the crypto home for more details. There is now no dependency on NewBinary. The downside is the library contains no support for ASN.1 which will be released in separate package.

TagSoup library 0.1. Neil Mitchell announced TagSoup, a library for extracting information out of unstructured HTML code, sometimes known as tag-soup. The HTML does not have to be well formed, or render properly within any particular framework. This library is for situations where the author of the HTML is not cooperating with the person trying to extract the information, but is also not trying to hide the information. The library provides a basic data type for a list of unstructured tags, a parser to convert HTML into this tag type, and useful functions and combinators for finding and extracting information.

ParseP library 0.1. Twan van Laarhoven announced a generalized/improved variant of the ReadP parser library. Unlike ReadP ParseP can handle any type of token, and actually generates error messages in case something goes wrong. It is also possible to use things other then a list as an input stream, for example ByteStrings.

Debian library for Haskell. Jeremy Shaw announced the availability of a library for interacting with the Debian system from Haskell. This library does not (currently) depend on dpkg or apt for any functionality. Contributions are welcome, and the library is available from Hackage. Well-Support Modules: parsing/Printing Debian control files, parsing/printing sources.list files, comparing Debian version numbers, a data type for encoding Debian relations and more.

Call for Contributions: HC and A Report. Andres Loeh mentioned that it is nearly time for the twelfth edition of the Haskell Communities and Activities Report. If you are working on any project that is in some way related to Haskell, write a short entry and submit it. Even if the project is very small or unfinished or you think it is not important enough -- please reconsider and submit an entry anyway!

System.FilePath 1.0. Neil Mitchell announced the System.FilePath 1.0 release! The FilePath library is a library for manipulating FilePaths in a cross platform way on both Windows and Unix. Documentation.

FGL - A Functional Graph Library. Martin Erwig announced a new release of the Functional Graph Library for Haskell. This release fixes some bugs in the implementation of several basic inspection functions.

TypeCompose 0.0. Conal Elliott announced TypeCompose, which provides some classes and instances for forms of type composition. It also includes a very simple implementation of data-driven computation.

Haskell SWF generation library. Jeremy Shaw announced the availability of an Adobe Shockwave Flash (SWF) library for Haskell. It is primarily useful for compiling ActionScript assembly into a .swf file.

New web-devel mailinglist for Haskell. Marc Weber announced a new web-devel mailinglist on haskell.org has been set up. You can subscribe here.

strict-0.1: strict versions of Haskell types. Roman Leshchinskiy announced the first release of package 'strict' which provides strict versions of standard Haskell types. At the moment, pairs, Maybe and Either are defined. The library is available from hackage.

Chess in Haskell. Steffen Mazanek announced a straightforward implementation of a chess engine in Haskell, available as a tutorial exercise.

storylen: story word count and categorization. Dino Morelli announced storylen, a command-line utility that counts the words in files and classifies them into story types (short story, novella, novel...). Its operation and output are very similar to the *nix program wc. This is useful for books in plain ascii text.

Haskell'

This section covers the Haskell' standardisation process.

Libraries

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

Discussion

Haskell in the real world: building a commercial website in Haskell with WASH. Adam Peacock described how he implemented a commercial website in Haskell, using WASH

Haskell communities worthy of academic study?. Claus Reinke wondered about the software archeology of Haskell.

Type level programming to eliminate array bound checking in the real world. Vivian McPhail mentioned an attempt to write code that will receive an array from C land and convert it to a type safe representation.

Conference roundup

Commercial Users of Functional Programming. Simon Peyton-Jones announced the call for speakers for this year's CUFP. If you use functional programming as a means, rather than as an end, this message is an invitation for you to offer to give a talk at the workshop.

Jobs

One-year INRIA post-doctoral position. Frederic Blanqui announced a one-year INRIA post-doctoral position is available investigating 'Generation of construction functions guaranteeing algebraic invariants on concrete data types'

Blog noise

Haskell news from the blogosphere.

Quotes of the Week

  • AdamPeacock: Once I looked at the source code, 25000 lines of ASP, I reckoned it would be easier to rewrite it in a real language.
  • JesseVincent: Perl's idea of a type system is: 'La-La-La, I don't hear you'
  • LPhas: [In reference to HAppS.SimpleHTTP] When I first saw the type of 'h' my reaction was to hide under my bed
  • SvenPanne: Taking away the prelude is a little bit like taking away 'int', 'double', 'for' and 'while' from a C programmer
  • sjanssen: Threads are fine, its your language that sucks.
  • thorat: C should only be used to implement something better

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 Sequence Software Update

Submitted by jgoerzen on Wed, 03/14/2007 - 12:59pm.

The Haskell Sequence has been upgraded from Drupal 4.6 to 5.1, which represents two major releases. Also, new account creation has been turned back on. If you notice any odd problems, please let us know.

Haskell Weekly News: March 12, 2007

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

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

This week we see the 2007 Haskell Workshop announcement, Haskell.org's participation in the Google Summer of Code gets underway, and of course, new libraries!

Announcements

Google Summer of Code and Haskell.org. Malcolm Wallace announced that Haskell.org has once again applied to be a mentoring organisation for the Google Summer of Code. If you are a student who would like to earn money hacking in Haskell, or you are a non-student who has a cool idea for a coding project but no time to do it yourself, then visit the SoC wiki to gather ideas, and add yourself to the list of interested people! Add new ideas for projects!

Haskell Workshop Call for Papers. Gabriele Keller announced the initial call for papers for the Haskell Workshop 2007, part of the 2007 International Conference on Functional Programming (ICFP). The purpose of the Haskell Workshop is to discuss experience with Haskell, and possible future developments for the language. The scope of the workshop includes all aspects of the design, semantics, theory, application, implementation, and teaching of Haskell.

Data.CompactString 0.3: Unicode ByteString. Twan van Laarhoven announced version 0.3 of the Data.CompactString library. Data.CompactString is a wrapper around Data.ByteString supporting Unicode strings.

harchive-0.2: backup and restore software in Haskell. David Brown announced release 0.2 of harchive, a program for backing up and restoring data. The package is available from Hackage.

New release of regex packages. Chris Kuklewicz announced new versions of the regex-* packages (base,compat,dfa,parsec,pcre,posix,tdfa,tre). There is a new wiki page with documentation relating to these packages. All packages are available from Hackage, under the Text Category.

StaticDTD: type safe markup combinators from DTDs. Marcel Manthe announced a tool that transforms a Document Type Definition to a library. The resulting library contains combinators that assure proper nesting of elements. The plan is to add more constraints that will also take care of the order of occurrence of children. The parsing of the DTD is done with HaXml. The code is available via darcs.

IPv6 support for network package. Bryan O'Sullivan announced that he'd added IPv6 support to the network package.

Type-level binary arithmetic library. Oleg Kiselyov and Chung-chieh Shan announced a new library for arbitrary precision binary arithmetic over natural kinds. The library supports addition/subtraction, predecessor/successor, multiplication/division, exp2, full comparisons, GCD, and the maximum. At the core of the library are multi-mode ternary relations Add and Mul where any two arguments determine the third. Such relations are especially suitable for specifying static arithmetic constraints on computations. The type-level numerals have no run-time representation; correspondingly, all arithmetic operations are done at compile time and have no effect on run-time.

Haskell'

This section covers the Haskell' standardisation process.

Libraries

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

Discussion

Avoiding intermediate data structures. David Roundy opened discussion on techniques for avoiding intermediate data structures in Haskell code

Maybe a different Maybe. Joachim Breitner wondered about avoiding intermediate Maybe constructs

Blog noise

Haskell news from the blogosphere.

Quotes of the Week

  • fishkandy: The problem with comparing apples to apples is that haskell has 'mango daiquiri' as a basic fruit
  • fax--: I wake up with a headache because of you, Haskell
  • norpan: I use functions, but i don't use them as arrows: I prefer silver bullets
  • ray: Some people claim everything is lisp. One time I was eating some spaghetti and someone came by and said: 'Hey, nice lisp dialect you're hacking in there'
  • roconnor: Damn it! Haskell pseudo code is indistinguishable from actual code
  • shapr: Today's nifty error message: *Main> thread blotttchhhkrrreeeedaaa dddinbbbdllleooofcccikkkneeeidddt eiiilnnnydddeeefffiiinnniiittteeelllyyy
  • stepcut: C? isn't that some low-level language that compilers output to?
  • wkh: Why does the haskell webpage link to 'research papers' under the 'getting started' section?

Code Watch

Tue Mar 6 06:31:12 PST 2007. Simon Marlow. add noDuplicate#. This primop ensures that the current computation is not being duplicated, by calling threadPaused(). The idea is to use it inside unsafePerformIO/unsafeInterleaveIO (see #986).

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: March 05, 2007

Submitted by dons on Sun, 03/04/2007 - 11:40pm.

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

Announcements

New Book - Programming in Haskell. Graham Hutton announced a new Haskell textbook: Programming in Haskell. This introduction is ideal for beginner programmers: it requires no previous programming experience and all concepts are explained from first principles via carefully chosen examples. Each chapter includes exercises that range from the straightforward to extended projects, plus suggestions for further reading on more advanced topics. The presentation is clear and simple, and benefits from having been refined and class-tested over several years.

Gtk2Hs version 0.9.11. Duncan Coutts announced Gtk2Hs - a GUI Library for Haskell based on Gtk+, version 0.9.11, is now available. Gtk2Hs features: automatic memory management; Unicode support; nearly full coverage of Gtk+ 2.8 API; support for several additional Gtk+/Gnome modules (Glade visual GUI builder, cairo vector graphics, SVG rendering, OpenGL extension and more).

cabal-make version 0.1. Conal Elliott announced Cabal-make, a GNU make include file to be used with Cabal in creating and sharing Haskell packages. A few highlights: web-based, cross-package links in Haddock docs; syntax coloring via hscolour, with per-project CSS; links from the Haddock docs to hscolour'd code and to wiki-based user comment pages. It is available here.

Vty 3.0.0. Stefan O'Rear announced a new major of vty, featuring improved performance. vty is notably used in yi to provide a terminal interface supporting syntax highlighting.

Haskell Xcode Plugin. Lyndon Tremblay announced the first release of a plugin for Xcode enabling Haskell syntax highlighting, Xcode projects compiling and linking, and a couple missing features, for Haskell (GHC).

urlcheck 0.1: parallel link checker. Don Stewart announced the first release of urlcheck, an parallel link checker, written in Haskell. Frustrated with the resources and time consumed by 'linkchecker', urlcheck is a lightweight, smp-capable replacement in Haskell. urlcheck pings urls found in the input file, checking they aren't 404s. It uses Haskell threads to run queries concurrently, and can transparently utilise multiple cores if you have them.

The Monad.Reader: call for copy. Wouter Swierstra welcomed articles for the next issue of The Monad.Reader. Submit articles for the next issue by e-mail before April 13th, 2007. Articles should be written according to the guidelines available from The Monad Reader home.

TV-0.2 and GuiTV-0.2. Conal Elliott announced TV, a library for composing tangible values ('TVs'), values that carry along external interfaces. In particular, TVs can be composed to create new TVs, and they can be directly executed with various kinds of interfaces. Values and interfaces are combined for direct use, and separable for composition. GuiTV adds graphical user interfaces to the TV (tangible value) framework, using Phooey. The functionality was part of TV up to version 0.1.1, and is now moved out to a new package to eliminate the dependency of core TV on Phooey and hence on wxHaskell, as the latter can be difficult to install.

Haskell-mode 2.2. Stefan Monnier released version 2.2 of the Haskell-mode package for Emacs. It has very few visible changes, mostly some commands to query an underlying interactive hugs/ghci in order to get type/info about specific identifiers.

Data.CompactString 0.1. Twan van Laarhoven announced a beta Unicode version of Data.ByteString. The library uses a variable length encoding (1 to 3 bytes) of Chars into Word8s, which are then stored in a ByteString.

HSXML version 1.13. Oleg Kiselyov announced version 1.13 of HSXML. HSXML is a library for writing and transforming typed semi-structured data in Haskell -- in S-expression syntax, with the extensible set of `tags', and statically enforced content model restrictions. A particular application is writing web pages in Haskell. We obtain HTML, XHTML or other output formats by running the Haskell web page in an appropriate rendering monad. The benefit of representing XML-like documents as a typed data structure/Haskell code is static rejection of bad documents -- not only those with undeclared tags but also those where elements appear in wrong contexts.

Haskell XML Toolbox 7.1. Uwe Schmidt announced a new version of the Haskell XML Toolbox. The main change is the step from cvs to darcs. The documentation has source links into the darcs repository. A tutorial is available in the Haskell wiki.

OmegaGB, Haskell Game Boy Emulator. Bit Connor announced OmegaGB, an emulator for the Nintendo Game Boy, written in pure Haskell. It uses gtk2hs for the user interface, but there is also a version that doesn't require gtk2hs and uses ascii art. You can find more information about the program at the website.

Takusen 0.6. Oleg and Alistair announced a new release of Takusen, the database library for Haskell. There are a large number of changes and bug-fixes in this release, including improved Oracle and PostgreSQL support.

hoogle.el. David House announced Hoogle.el, a simple Emacs Lisp library that nicely integrates Hoogle into Emacs.

Buggy nofib. Josep Silva Galiana announced a 'buggy' version of the nofib collection of Haskell programs. All programs contain one of these bugs: a bug that produces an incorrect result; a bug that produces non-termination; a bug that produces an exception (e.g., div by zero). The buggy nofib suite can be used to test debugging tools.

nobench: Haskell implementation shootout. Don Stewart announced nobench, a cross-implementation performance benchmark suite, based on nofib, comparing the performance of various Haskell compilers and bytecode interpreters on a range of programs.

Derangement version 0.1.0. Dennis Griffith announced the initial version of derangement, a library for finding a derangement of a set. A derangement of a set is a permutation with no fixed points, like many constrained matching problems it is susceptible to solution via a Max-flow algorithm.

HSH 1.0.0. John Goerzen announced the first release of HSH. HSH is designed to let you mix and match shell expressions with Haskell programs. With HSH, it is possible to easily run shell commands, capture their output or provide their input, and pipe them to/from other shell commands and arbitrary Haskell functions at will. HSH makes it easy to run shell commands. But its real power is in piping. You can pipe -- arbitrarily -- between external programs, pure Haskell functions, and Haskell IO functions

A new Haskell cookbook. Martin Bishop began a preliminary page, and fleshed out some of the headers/sub-headers on the wiki page for a good Haskell Cookbook (not a PLEAC clone). Please contribute.

Haskell'

This section covers the Haskell' standardisation process.

Libraries

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

Discussion

Haskell with only one typeclass. Oleg Kiselyov described how, if the ability to define typeclasses is removed from Haskell, no expressivity is lost. If Haskell had only one, pre-defined typeclass with only one method, we could still do normal Haskell programming with standard and user-defined overloaded numerical functions, monads, monad transformers, etc. Haskell with only one typeclass can express all of Haskell98 typeclass programming idioms including constructor classes, plus multi-parameter type classes and some functional dependencies.

Data type declarations are implicitly moduled. Chris Moline proposed an idea to allow multiple data declarations to share constructors by having them be implicitly declared inside a module.

Importance of MonadRandom. Yitzchak Gale pointed out the importance of Cale Gibbard's MonadRandom. This monad makes it possible to write functions that use randomness without having to specify in advance whether the source of randomness will be a pure pseudorandom number generator, as in System.Random, or physical randomness via the IO monad, such as your operating system's source of physical randomness, or random.org, or a hardware random generator.

Become a GHC build slave!. Simon Marlow pointed out that, thanks largely to Ian Lynagh, GHC now has a BuildBot infrastructure to automate nightly builds on multiple platforms. This replaces the old set of shell scripts that we used to run nightly builds; now adding new clients to the setup is relatively easy. So far we have various Windows builds running, and I'll be moving over the existing Linux nightly builds in due course.

Editor support for low level hacking. Don Stewart mentioned some tools used for making low level optimisation of GHC Haskell code easier

Optimisation fun. Creighton Hogg sparked a long thread on optimising prime sieves in Haskell

OO Design in Haskell Example. Steve Downey began a thread on OO design in Haskell

Safe lists with GADTs. Neil Mitchell explored a safe version of head and tail, on a safe version of lists, using GADTs

Jobs

Research position at Nokia Research Center. Jamey Hicks announced the availability of a senior research engineer position at Nokia Research Center Cambridge, US. They are seeking an exceptional, highly motivated individual who is interested in a unique opportunity to collaborate with a world-class academic research community. This position is for the Armo project at NRC Cambridge, using Bluespec hardware description language to radically improve Nokia's ability to develop advanced SOCs and corresponding software for future mobile phones and mobile computers. We are investigating co-development of hardware and software components for such devices. Success in the project will lead to both academic publication as well as a significant positive impact on Nokia products and engineering.

New PhD Positions Computing Science, Chalmers University. Koen Claessen announced new PhD positions for 2007, at Chalmers University of Technology. The focus is on algorithms, bioinformatics, distributed systems and computing, functional programming, formal methods, interaction design, language technology, language based security, parallel and high performance computing, programming logic and type theory, but research is not restricted to these topics.

Positions at Oxford: refactoring tools. Oege.de.Moor announced the availability of positions in the Programming Tools Group at Oxford, researching aspect refactoring tools

Blog noise

Haskell news from the blogosphere.

Quotes of the Week

  • sleepingsquirrel: Programming in Haskell is like having an interactive conversation with a teleportation machine. You tell it you want to go to some place warm and sandy. The machine complains about ambiguous constraints. So you tell it that there should be plenty of free tropical fruit drinks. It carps 'Inferred location less polymorphic than expected'. Whoops, free flowing that is... After a few more iterations, there's a little puff of smoke, and at the sound of the chimes, you discover you're now on the beach in Tahiti. And although you've used the machine many times before, you can't help but be impressed that it usually 'Just works' most of the time.
  • jmillikin: If I had to work on code with performance requirements, Haskell would be my choice (followed by C++). Haskell has functional goodness with the ability to break into imperative mode, and C++ gives me direct memory management with a few functional pieces.
  • Cale: It ought to be called simonPerformIO, and only used if your first name is Simon
  • monochrom: m a -> (a -> m b) -> m b is much more to the point than 'mumble computation mumble computation'
  • mwc: There's a time when your brain doesn't get the monads. Then something violent and irreversable happens and you hate every other language for not having monads

Code Watch

Wed Feb 28 05:07:14 PST 2007. Simon Marlow. Remove vectored returns. We recently discovered that they aren't a win any more, and just cost code size.

Wed Feb 21 09:04:01 PST 2007. simonpj. Allow GADT syntax for newtypes

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: January 31, 2007

Submitted by dons on Wed, 01/31/2007 - 3:30am.

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

Lots of news to report after a break due to Hac '07 and POPL.

Announcements

lhs2tex 1.12. Andres Loeh announced lhs2TeX version 1.12, a preprocessor to generate LaTeX code from literate Haskell sources. lhs2TeX includes the following features: highly customized output; liberal parser; generate multiple versions of a program or document from a single source; active documents: call Haskell to generate parts of the document (useful for papers on Haskell); a manual explaining all the important aspects of lhs2TeX.

hscom. Krasimir Angelov announced the hscom library. This is a FFI library for Microsoft COM. It is far from complete and it doesn't have automatic IDL to Haskell translator but if you have ever thought to start writing you own COM library for Haskell then please take a look. It is designed to be as close as possible to the standard FFI library for C.

DeepArrow 0.0: Arrows for 'deep application'. Conal Elliott announced the birth of DeepArrow, a Haskell library for composable 'editors' of pure values. DeepArrow enables 'deep function application' in two senses: deep application of functions and application of deep functions. These tools generalize beyond values and functions, via the DeepArrow subclass of the Arrow type class.

Phooey 0.1: functional user interface library. Conal Elliott announced version 0.1 of Phooey, an arrow-based functional user interface library. New in version 0.1: documentation, text input, boolean input/output, mtl. Phooey is now used in TV.

TV 0.0: Tangible Values. Conal Elliott announced TV, a library for composing tangible values (TVs): values that carry along external interfaces. In particular, TVs can be composed to create new TVs, and they can be directly executed with a friendly GUI, a process that reads and writes character streams, or many other kinds interfaces. Values and interfaces are combined for direct use, and separable for composability. See the project page.

polyparse 1.00. Malcolm Wallace announced the release of PolyParse, a collection of parser combinator libraries in Haskell. They were all previously distributed as part of HaXml, but are now split out to make them more widely available.

Data.Binary: binary serialisation. The Binary Strike Force announced the release of Binary, a high performance, pure binary serialisation library for Haskell. It is available from Hackage and darcs. The 'binary' package provides efficient serialisation of Haskell values to and from lazy ByteStrings. ByteStrings constructed this way may then be written to disk, written to the network, or further processed (e.g. stored in memory directly, or compressed in memory with zlib or bzlib).

DrIFT 2.2.1: support for Data.Binary. John Meacham announced that DrIFT 2.2.1 is out and now has support for the Data.Binary module.

A History of Haskell. Simon Peyton-Jones mentioned that the paper 'A History of Haskell: being lazy with class', authored by Paul Hudak, John Hughes, Phil Wadler and Simon, is finally done. You can get a copy now!

piggybackGHC 0.1. Martin Grabmueller announced the release 0.1 of piggybackGHC, a small utility package for using GHC for lexing and parsing Haskell source code. The library uses the GHC library for all the hard stuff, so all supported GHC extensions are available.

regex-tdfa 0.20. Chris Kuklewicz announced regex-tdfa, a 'tagged' DFA regular expression backend in pure Haskell, along with a suite of updates to the existing regex packages.

hpaste.org. Eric Mertens announced 'hpaste', the Haskell Pastebin. Developed over a few days by many of the members of the Haskell irc channel, it provies a reliable paste bot with Haskell-specific capabilities.

Haskell'

This section covers the Haskell' standardisation process.

Libraries

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

Discussion

Beautiful concurrency. Simon Peyton-Jones announced that the revised draft of 'Beautiful concurrency' is now online, and feedback is welcome.

Even higher-order abstract syntax: typeclasses vs GADT. Oleg Kiselyov demonstrated a typeclass implementation of the canonical use case for GADTs: a higher-order abstract-syntax-based embedding of a language in Haskell, with implement static and dynamic semantics of the language. The interpreter of the language is tagless and statically assured: only well-typed terms may be evaluated, and the evaluation of those does not get stuck.

JHC call for volunteers. John Meacham mentioned that Jhc has recently gotten a ghc back end, making it much closer to mainstream use as an optimizing 'front end' to ghc. In addition to some of jhc's crazy optimizations, it implements several extensions to the language which will likely prove interesting to play with to some. John would like to welcome any volunteers who would like to help develop the ghc back end while I work on improving the grin back end and optimizations in general, to make JHC a viable alternative compiler for Haskell.

State monad strictness. Yitzchak Gale pondered strictness in State monads.

Using PAPI to measure performance with CPU events. Alexey Yakushev described how to use the new PAPI library together with GHC to gather performance information from your CPU (cache misses, branch misprediction). At present only cache miss information is supported in a platform independent way (though not tested). Also, this implementation separates the performance information for the garbage collector and the mutator so it is quite useful if you are implementing an optimisation.

Simple proof-carrying code in Haskell 98. Oleg Kiselyov demonstrated a datatype `Terminates' that can hold only an assuredly terminating (strongly normalizable) term in untyped lambda-calculus. Furthermore, the values of the datatype `Terminates' contain all and only those untyped lambda-calculus terms with that property. To create the value `Terminates', the user submits the term in question and the proof of its termination. The proof will be verified -- and if it holds, the Terminates certificate will be created.

Article review: Category Theory. David House mentioned that he's written a chapter for the Wikibook that attempts to teach some basic Category Theory in a Haskell hacker-friendly fashion.

IO is not a monad. Yitzchak Gale sparked a long thread on issues of parametricity and polymorphic seq in the IO monad

Monad laws for fail. Ulf Norrel wondered about what properties 'fail' should satisify

Jobs

Postdoctoral Research Fellow at St Andrews. Kevin Hammond announced a vacancy for a postdoctoral research fellow, working with the Hume language developed jointly with Heriot-Watt University. Knowledge of Haskell and other functional programming technologies is a distinct advantage.

Blog noise

Haskell news from the blogosphere.

Quotes of the Week

  • ndm: [dons] How do we serialise an Int portably? [ndm] Just use the first 29 bits
  • C.M.Brown: I told them they could all finish the class in 5 minutes if they used Haskell... The look of horror on the student's faces when I mentioned the 'H' word was priceless. However, they were all prepared to spend 50 minutes writing a Java program which would have the same effect.
  • dons: dons law: if you have a bug, you are missing a QC property
  • BjarneStroustrup: Within C++, there is a much smaller and cleaner language struggling to get out.
  • ClaudiusMaximus: Compiling with -O2 reduced the time taken by my program's execution from 28 mins to 17 seconds.
  • dons: Think of a monad as a spacesuite full of nuclear waste in the ocean next to a container of apples. now, you can't put oranges in the space suite or the nucelar waste falls in the ocean, *but* the apples are carried around anyway, and you just take what you need.
  • Runar Jordahl: Haskell has quite the following among the alpha geeks
  • bakert: I know all my programs can be reduced to only one tenth the size if only I can learn all these crazy functions
  • glguy: [on hpaste.org] you can have your code syntax colored however you like, as long as that color is 'haskell'
  • huschi: Programing in haskell seems a bit frustrating. i'm missing searching for errors :(
  • dons: I had a dream about how to write instance Binary Integer last night
  • bd: If a graph is reduced in a forest, and no one is around to pattern match the resulting WHNF, does it cause a space leak?
  • bos: [dons] and stricify, specialise and inline as appropriate till the raw bytestring Addr# start appearing [bos] um, is that next to the dilithium crystals?
  • kolmodin: It's nice to have static types after a bottle of wine
  • nmessenger: Brain explosion is like a traditional pasttime in #haskell

Code Watch

Thu Jan 11 05:13:59 PST 2007. Pepe Iborra. Added the new :breakpoint continue option. Previously, when in a breakpoint, :quit was used to continue execution. This is not the right thing to do, so this patch restores :quit to its original meaning whether or not ghci is in an inferior session. The continue behavior is now provided by ':breakpoint continue'. I added a synonim command in :continue because it is much shorter, but this is optional

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: January 09, 2007

Submitted by dons on Mon, 01/08/2007 - 6:34pm.

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

More libraries and applications for the new year, and the Haskell Hackathon gets underway!

Announcements

Happy: LALR(1) parser generator. Simon Marlow announced version 1.16 of Happy, the parser generator system for Haskell. Changes from version 1.15 to 1.16 include switching to Cabal, a new %error directive, new production forms, and attribute grammar support. Happy version 1.16 is required for building GHC version 6.6 and later.

Alex: lexical analyser generator. Simon Marlow announced version 2.1.0 of Alex. Changes in Alex 2.1.0 vs. 2.0.1 include switching to Cabal, and slight changes to the error semantics.

rdtsc: reading IA-32 time register. Martin Grabmueller announced version 1.0 of package rdtsc has just been released. This small package contains one module called 'Rdtsc.Rdtsc', providing the function 'rdtsc' for accessing the 'rdtsc' machine register on modern IA-32 processors. This is a 64-bit counter which counts the number of processor cycles since the machine has been powered up. Using this instruction, you can make very precise time measurements which are independent of the actual CPU frequency.

monadLib 3.0. Iavor Diatchki announced a new version of monadLib, a collection of standard monad implementations. Some of the changes compared to the previous version: the whole library is in a single module MonadLib.hs (~500 lines); simpler and more symmetric API; removed the (generic) monadic combinators; removed the search transformer; rewrote some transformers in the 'traditional' way (exceptions and output); there is an optional module that defines base monads corresponding to each transformer.

Shellac 0.6. Robert Dockins announced a simultaneously release of the following related packages: Shellac 0.6 Shellac-readline 0.3 and Shellac-vty 0.1. Shellac is a framework for building read-eval-print style shells which uses configurable backend plugins. The major new feature of this release is the new Shellac-vty backend package, which uses the new Vty library terminal I/O directly. It currently has basic line editing keybindings, paging, and a command history. The main package and Shellac-readline updates consist of minor API updates.

IntelliJIDEA for Haskell. Tony Morris announced syntax highlighting support for Haskell in IntellijIDEA, released under a BSD licence.

Yampa + GADT for GHC 6.6. Joel Reymont announced a cabalized version of Yampa + GADT for GHC 6.6. Joel also sought comments on cabalisation, testing and example for this package.

HNOP. Ashley Yakeley updated the status of HNOP, the Haskell library for doing nothing. It has recently been split into two Cabal packages: 'nop', a library of no-op services, and 'hnop', a program that uses nop to do nothing. Both packages can be found in darcs. The two packages are intended to be templates for Cabal projects, so I'm interested in making them as canonical and 'best practices' for packaging libraries and executables.

Haskell'

This section covers the Haskell' standardisation process.

Discussion

instance Monad Set, using GADTs. Roberto Zunino announced a definition of the Set datatype, with the usual operations, such that it can be made a member of the Monad class.

GADTs are expressive. Jim Apple described a data type which holds only those terms of the untyped lambda calculus that are reducible to normal form, using GADTs

Hackage interface. Ross Paterson set up (temporarily) a simple first cut at an interface to the Hackage package database. On a related note, there was some discussion for home pages for Hackage projects, and collecting statistics.

Conference roundup

The Haskell Hackathon. Hac 2007 is being held this week, January 10-12th, in Oxford, with around 20 Haskell coders from across the world gathering to hack on libraries and practical tools for Haskell. Work is planned for at least hackage, Cabal, bytestrings, binary IO, http, GHC, YHC, Hoogle, DrHaskell, WinHugs, GHCi debugger, crypto, QuickCheck 2, Haddock and more besides. Notably, some graduates from this year's Google Summer of Code projects will be attending, with plans to integrate their work into the main project branches. Happy hacking everyone!

Blog noise

Haskell news from the blogosphere.

Quotes of the Week

  • Eric: The Haskell [code] contains no redundancy. In fact, in all the [Haskell] code I've written, in both production and play, each idea is expressed once and only once. It is the Zen ideal of perfect code. And thats never happened to me before.
  • nostrademons: Haskell is in a similar position [to Scala] - a complex language with many sustaining innovations - but it has one major disruptive innovation. Purity. Now, the question is whether that can be leveraged in a way that makes it useful in some market that existing imperative languages can't reach. My bets are on concurrency...
  • Excedrin: Isn't OO deprecated?
  • dpiponi: [monochrom] Nevermind monads. Use arrows. Come join the Dart Side! [dpiponi] Never mind arrows. Use comonads. Cojoin the other side.
  • nilsi: #haskell is better than Google
  • sigfpe: I think Haskell is a great language for short attention spans. You can get so much done in one line before you get bored.
  • timthelion: Oh wait, I LOVE foldr!! And I have only been learning Haskell for hours
  • kowey: All the things with guards are just there to siphon off the weirdos
  • Eric: [Haskell] astonishes me at every turn with its beauty and elegance. I've never felt such power. Haskell has brought back a joy in programming that I didnt even know I was missing.
  • Paul Johnson: Mutable state is actually another form of manual memory management: every time you over-write a value you are making a decision that the old value is now garbage, regardless of what other part of the program might have been using it.

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: January 02, 2007

Submitted by dons on Mon, 01/01/2007 - 9:10pm.

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

This week brings a new release of vty and HsColour, and some interesting discussion over the holiday break.

Announcements

hscolour-1.6. Malcolm Wallace announced HsColour, a popular syntax-highlighter for Haskell code. It can generate ANSI terminal colour codes, HTML, and CSS, and can insert hyperlink anchors for function definitions (useful in conjunction with Haddock). HsColour-1.6 is now available. The major addition is a new LaTeX output mode.

Dimensional: Statically checked physical dimensions. Björn Buckwalter announced version 0.1 of Dimensional, a module for statically checked physical dimensions. The module facilitates calculations with physical quantities while statically preventing e.g. addition of quantities with differing physical dimensions.

vty 2.0. Stefan O'Rear announced a new major version of vty. Differences from 1.0 include: vty now uses a record type for attributes, instead of bitfields in an Int; vty now supports setting background colors; you can now explicitly specify 'default' colors; vty now supports Unicode characters on output, automatically setting and resetting UTF-8 mode.

'Lambda Revolution' tshirts. Paul Johnson announced the creation of a new Haskell tshirt, on the theme of 'The Lambda Revolution'. Tshirts are available from CafePress, and the designs are freely available.

Discussion

Beautiful concurrency. Simon Peyton-Jones mentioned that he's been writing a chapter on concurrency and transactional memory for a new book, 'Beautiful code'. A first draft is available and Simon welcomes constructive suggestions for improvement. The book is aimed at a general audience of programmers, not Haskell geeks, so tries to explain everything necessary. If you are not a Haskell expert, your input would be particularly valuable.

Limits to implicit parallelism in functional applications. John DeTreville announced a short paper about how much implicit parallelism there might be in ordinary functional applications.

Inlining higher order functions. Norman Ramsey asked about fine grained control for inlining in higher order functions.

Red-black trees as a nested datatype. Jim Apple described how to implement red-black trees as a nested datatype.

SYB for XML: deserialization and collections. Alexander Jacobson asked about approaches to simplifying boilerplate in HAppS associated with XML serialization and state deserialization.

Flattening a lisp-style tree. pphetra asked about flattening heterogeneous lists (or trees) in Haskell.

Jobs

Functional programming at Jane Street Capital. Yaron Minsky announced that Jane Street Capital is again looking to hire some top-notch functional programmers. Of particular note is that Jane Street Europe Ltd. now has an office in London, and we are particularly interested in hiring someone for that office with strong systems administration skills in addition to experience with functional programming languages. The ideal candidate has: a commitment to the practical, experience with functional programming languages (such as Haskell). Applicants should also have experience with UNIX and a deep understanding of computers and technology and a strong mathematical background.

Blog noise

Haskell news from the blogosphere.

Quotes of the Week

  • chessguy: [in regards to #haskell] man, it's amazing the difference between what happens when someone asks for help here, and what happens when they ask for help in another language channel
  • cjeris: It's amazing what some languages do to make thinking impossible, seemingly justified by the assumption that no one thinks anyway, so it's more important to make non-thinking programming as easy as possible.
  • edwinb: I've just walked past a poster advertising a gig by a band called 'The Awkward Squad'. I assume this means they provide output, play concurrently, and people take exception to them.
  • kfish: Apparently @pl also doubles as the command for producing an unintelligible flip-stream
  • Binkley: [Monads as clothes] using unsafePerformIO is kind of like going naked in public, might be safe in some contexts, but you really don't want to know what happens if you do it in a really bad one
  • quazimodo: I know why you guys are so ready to deal with me and put up with noob questions ... you program so fast compared to other language users that you have time to mess around?
  • iulus: IO, IO, it's off to bind we go ...
  • dons: all your imperative are belong to us
  • Logan Capaldo: I like constructing things with type errors. It lets me read the error and try and figure out what I'm really trying to do
  • glguy: In true Haskell form, after I realized what I was actually doing... all my functions melted down to about 2 lines each
  • jcreigh: I've found learning Haskell makes me feel vastly inferior to Haskell coders. ('Oh,', they say, 'That's just a fold over the hyper-monad fluxbox list. Here's the one-line replacement for your entire program.')
  • Saizan: [New Year's Fun] Yesterday I was so drunk I was trying to typecheck the people at the party... 'What's your monad!?'

Code Watch

Wed Dec 27 17:03:48 PST 2006. Manuel M T Chakravarty. Parse and desugar equational constraints. With -findexed-types, equational constraints can appear in contexts wherever class predicates are allowed. The two argument types need to be boxed and rank 0.

About the Haskell Weekly News

Each week, new editions are posted to the Haskell mailing list as well as to the Haskell Sequence and Planet Haskell. RSS is also available, and headlines appear on haskell.org. Headlines are available as PDF. The Haskell Weekly News is also available in Spanish translation.

To help create new editions of this newsletter, please see the contributing information. Send stories to dons at cse.unsw.edu.au. The darcs repository is available at darcs get http://www.cse.unsw.edu.au/~dons/code/hwn

Haskell Weekly News: December 20, 2006

Submitted by dons on Tue, 12/19/2006 - 7:10pm.

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

A new release of the Edison data structures library, along with several other new libraries, and some new Haskell articles in the blogspace.

Announcements

Edison 1.2.1. Robert Dockins announced the 1.2.1 release of Edison. Edison is a famous library of efficient, purely-functional data structures in Haskell. Notable changes from the previous version include: a new sequence implementation based on finger trees; documentation fixes dealing with the licence; added a few methods to EnumSet for wrapping and unwrapping the underlying Word

Basic serialisation library using SYB. Stefan O'Rear announced GenericSerialize, a library for serialization using the existing generic-programming framework. It is often advocated that support for serialization should be added to the compiler (e.g. in the form of a deriving(Binary)). With this project Stefan wants to show that the existing infrastructure is sufficient, and has some advantages over a dedicated serialization interface. GenericSerialize supports multiple serialization modes.

vty 1.0. Stefan O'Rear announced vty 1.0, a simple terminal interface library. It provides: handling of suspend/resume, window resizes, computation of minimal differences, minimizes repaint area, automatically decodes keyboard keys into (key,modifier) tuples, and more!

Monad.Reader call for copy. Wouter Swierstra reminded us that its still not too late to write something for the next issue of The Monad.Reader! We have a nice issue slowly shaping up, but your contribution is still very welcome. Get in touch with Wouter if you intend to submit something -- the sooner you let him know what you're up to, the better.

Ranged Sets. Paul Johnson announced that Ranged Sets now have a Monoid instance, and singletons (i.e. a range holding a single value), thanks to Jean-Philippe Bernardy.

CalDims 1.0 (RC 1). schneegloeckchen announced CalDims, a calculator aware of units. Its available from the Haskell wiki. It includes support for user defined basic units and derrived units; user defined functions; work sheets can be modified/saved via shell; (1/3)*3 == 1 (No rounding errors); built-in feature to simplify units and easy unit-conversion.

JoinCabal. Dougal Stanton announced an alternative to mkcabal, for initialising new cabal projects: JoinCabal, available via darcs. JoinCabal will create stub sources files with a license header, and appropriate license for you code, making it easier to set up a valid cabal build system.

Haskell Vim plugin. Arthur van Leeuwen announced a new vim plugin for Haskell providing some preliminary folding support, easy insertion of type signatures into programs, and support for handling .hi files.

Haskell'

This section covers the Haskell' standardisation process.

Discussion

Automonadization of code. Adam Megacz asked if there any work on automatic translation of code in some tiny imperative language into Haskell code that uses the ST and/or IO monads (or perhaps even pure functional code)?

What are the points in pointfree style?. Steve Downey wondered about the origin of the term 'points' in pointfree style.

Rebinding >>= for restricted monads. David Roundy pondered rebinding the >>= syntax in order to provide a more restricted monad.

#haskell reaches 300 users. Don Stewart noticed that the #haskell IRC channel has now reached the 300 user mark, making it one of the top 15 channels on the freenode network.

Blog noise

Haskell news from the blogosphere.

Quotes of the Week

  • Cale: I spent a whole summer being paid to write a nondeterministic search program in the list monad
  • monochrom: 007 titles for Haskellers: fromForeignPtr withCString; You Only lift Twice; Bottoms Are Forever; The Monad with the Pure Function; For Your Types Only; A view to A seq; Licence to killThread; iterate Never Dies; unsafePerformIO Is Not Enough.
  • DavidRoundy: ... fun of haskell-cafe is that it's where all the cool people hang out
  • dons: Coding drunk in Haskell is ok though, its like drinking on a passenger plane flight -- the stewards will prevent you from hurting anyone. However, coding drunk in C is just scary, DUI territory, and should not be allowed.
  • JulianMorrison: Small startup companies are the expendable sensory and feeding apparatus of the mainstream.
  • droundy: With a higher-kinded monad and phantom existential witness types, darcs would be very fun...
  • dons: The alien rulers of the galaxy must surely use a statically typed language with type inference
  • dibblego: Java programmers prefer referential transparency too, they just call it 'design patterns' or something
  • tessier: After the last newbies head exploded trying to read everything on that monad link there was a lot of paperwork. We'd like to avoid doing that again.

Code Watch

Fri Dec 8 21:03:34 PST 2006. Andy Gill. Adding tracing support (HPC)

Wed Dec 13 08:45:38 PST 2006. simonpj. You can now have an MVar with a polymorphic contents

About the Haskell Weekly News

Each week, new editions are posted to the Haskell mailing list as well as to the Haskell Sequence and Planet Haskell. RSS is also available, and headlines appear on haskell.org. Headlines are available as PDF. The Haskell Weekly News is also available in Spanish translation.

To help create new editions of this newsletter, please see the contributing information. Send stories to dons at cse.unsw.edu.au. The darcs repository is available at darcs get http://www.cse.unsw.edu.au/~dons/code/hwn

Haskell Weekly News: December 12, 2006

Submitted by dons on Tue, 12/12/2006 - 1:52am.

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

Lots of new, practical Haskell libraries released this week, including support for ogg sound file parsing, a new user interface library, ftp clients and servers, database bindings as well as config files and logging.

Announcements

Visual Haskell 0.2. Krasimir Angelov announced the final version of Visual Haskell 0.2 is available! This is the first version that is: available for both VStudio 2003 and VStudio 2005; distributed with a stable GHC version (6.6). Additionally the plugin itself is much more stable than its first 0.0 version.

Phooey: functional user interfaces for Haskell. Conal Elliott announced Phooey, a functional UI library for Haskell. GUIs are usually programmed in an 'unnatural' style, in that implementation dependencies are inverted, relative to logical dependencies. This reversal results directly from the imperative orientation of most GUI libraries. While outputs depend on inputs from a user and semantic point of view, the imperative approach imposes an implementation dependence of inputs on outputs. Phooey ('Phunctional ooser ynterfaces') retains the functional style, in which outputs are expressed in terms of inputs. In addition, Phooey supports dynamic input bounds, flexible layout, and mutually-referential widgets. It is available via darcs.

HOgg 0.2.0. Conrad Parker announced HOgg 0.2.0. The HOgg package provides a commandline tool for manipulating Ogg files, and a corresponding Haskell library. This is the initial public release. The focus is on correctness of Ogg parsing and production. The capabilities of the hogg commandline tool are roughly on par with those of the oggz* tools, although hogg does not yet provide an equivalent to oggz-validate. HOgg supports chained and multiplexed Ogg bitstreams conformant with RFC3533. HOgg can parse headers for CMML, FLAC, OggPCM, Speex, Theora and Vorbis media codecs, and can read and write Ogg Skeleton bitstreams.

ftphs. John Goerzen announced ftphs, an FTP client and server library for Haskell. Its features include: easy to use operation; full support of text and binary transfers; optional lazy interaction; server can serve up a real or a virtual filesystem tree; Standards compliant. ftphs was previously a part of the MissingH library. The code in this release is unchanged from its state in MissingH, other than the changes necessary to make it a standalone package.

AnyDBM 1.0.0. John Goerzen announced AnyDBM, a generic DBM-type interface. AnyDBM provides a generic infrastructure for supporting storage of hash-like items with String-to-String mappings. It can be used for in-memory or on-disk storage. Two simple backend drivers are included with this package: one that is RAM-only, and one that is persistent and disk-backed. The hdbc-anydbm package provides another driver, which lets you use simple tables in any SQL database to provide a DBM-like interface. MissingPy also provides a Python driver which lets you use any Python anydbm driver under Haskell AnyDBM.

ConfigFile 1.0.0. John Goerzen announced ConfigFile, a parser and writer for handling sectioned config files in Haskell. The ConfigFile module works with configuration files in a standard format that is easy for the user to edit, easy for the programmer to work with, yet remains powerful and flexible. It is inspired by, and compatible with, Python's ConfigParser module. It uses files that resemble Windows .INI-style files, but with numerous improvements.

hslogger. John Goerzen announced hslogger, a logging framework for Haskell. hslogger's features include: each log message has a priority and a source associated with it; multiple log writers can be on the system; configurable global actions based on priority and source; extensible log writers (handlers); default handlers that write to the console, file handles, or syslog; easy to use operation. hslogger is the first package to be split off from the MissingH source.

MissingH 0.18.0. John Goerzen announced MissingH 0.18.0. MissingH is a large collection of assorted utility libraries for Haskell. Its primary audience is Haskell programmers that want to get practical things done fast. This release implements the first part of the MissingH transition. The major changes are: most code from other sources that had been merged into MissingH has been split off; stable, mostly standalone components of MissingH have been split off: hslogger, ftphs, ConfigFile, AnyDBM, and all modules renamed to more closely follow current Haskell naming practices.

ZMachine 0.0. Samuel Bronson announced a (partial) Z-machine interpreter in Haskell. It uses gtk2hs for the interface, though other interfaces could be implemented without actually changing the interpreter proper. The Z-machine is a virtual machine that was developed by Joel Berez and Marc Blank in 1979 and used by Infocom for its text adventure games.

Halp: Haskell Logic Prover. Dan Mead announced the release of Halp, the simple logic prover. Right now it only supports simple first order logic but predicates are on the way. Theres also a simple gui written in Java 5 which is in the darcs repository.

DList 0.1. Don Stewart announced dlist 0.1, a library for difference lists in Haskell. Difference lists are a Haskell idiom for implementing O(1) append on lists, using functions to represent the lists.

Haskell'

This section covers the Haskell' standardisation process.

Discussion

Ninety Nine Haskell Problems. Andrew Wagner mentioned that 99 Lisp exercises have been ported to Haskell. Solving these exercises is a great way for relatively new haskell programmers to contribute something, since most of the problems are relatively simple. So have at them! All you need to do is write a canonical Haskell solution, and add it to the wiki. Please follow the instructions for 'reserving' a problem so we're not all duplicating each others' work. We should be able to knock these problems out in a matter of hours!

MissingH status. John Goerzen announced that MissingH now has a new Trac-based homepage, complete with wiki, Darcs repository information, source browser, bug tracker, and the various pieces of MissingH have been split off already into separate packages. The full list of changes is available.

Reversing a string of words: C# v Perl v Ruby v Haskell. Andrew Savige invoked the Haskell cafe magicians with a comparison of string processing support across languages.

Unlifted type variables in GHC. Brian Alliet asked about the intricacies of supporting type variables with an unlifted kind.

Wanted: libraries. Don Stewart asked for information about missing or substandard libraries to be documented on the wiki.

Haskell for Dummies. Kirsten Chevalier launched an interesting discussion to produce a new 'Practical Haskell' or 'Haskell for Dummies' textbook.

Stratified monads. Mark Carroll asked about experience with Espinosa's stratified monads in Haskell.

Conference roundup

hal: Haskell in Leipzig. More than 25 Haskellers from all over Germany gathered in Leipzig for the first HaL, Haskell in Leipzig, meeting. The range of different backgrounds was broad and spanned both the academic and the business worlds, encompassing seasoned Haskell programmers as well as beginners. There were five talks and two discussion sessions, and a functional breakfast. One of the discussion sessions had IDE support (in particular, in Eclipse) as its topic, the other focused on the possibilities for promoting Haskell in the software industry. The talk topics ranged from the use of Haskell in web technology and in climate research, to specifics of programming (MonadFix, coding guidelines). A very Haskell-like language (CAL Quark) that offers access to Java libraries and can be compiled to JVM bytecode was also introduced. A second 'Haskell in Leipzig' meeting is planned for early spring 2007. Summaries of the talks are available.

The Haskell Hackathon. The Hac organisers announced that extended registration for Hac 07, the Haskell libraries and infrastructure hackathon is open, via the Hac website.

Blog noise

Haskell news from the blogosphere.

Quotes of the Week

  • Jim Apple: The Haskell list probably has the widest 'knowledge bandwidth' of any mailing list I've ever seen, from total beginner questions to highly abstruse stuff which probably represents the cutting edge of PhD research. All are answered with detail and good humour.
  • [Seen on the Haskell mailing list]: Wow! I found your help terrific! Thank you! Can I give you some money?
  • Paul Johnson: Is functional programming an actual bona-fide silver bullet as defined by Brooks? I believe it is. Functional programming is based on a sound theory of scalable software engineering, and the empirical evidence clearly and consistently supports the theory.
  • Clemens Fruhwirth: After all the elegance I have to conclude that Haskell definitely deserves to be looked at.
  • sorear: Haskell is amazing. I'm still working on my infinite-types unifier, and in a day I've added sums, products, and lambda abstractions, refactored the code until there was a net *decrease* in LOC, and helped man #haskell all at the same time. This'd take me a week in C, no doubt.
  • Claus Reinke: The aim of update programming is to transform a store whose contents describe a problem into a store whose contents describe a solution. The aim of functional programming is to transform a program which describes a problem into a program which describes a solution.
  • Daveman: What if I don't want to obey the laws? Do they throw me in jail with the other bad monads?
  • Stinger: Sometimes Haskell seems like an arms race between weird mathematical constructs and my brain
  • astrolabe: Below a certain level of competence, coding is a destructive act. Like playing the violin.
  • dons: Gimme some lambda warez!
  • wy: [wy] lennart: Wow. You won the IOCCC three times! [augustss] I'm bad at C programming ;)
  • shapr: I think the Haskell approach works fine. That is, stick with research and do the best you can. Then after fifteen years of gestation, take over the world.
  • edwinb: Where does 'Oleg cornered me in a pub and explained delimited continuations to me' fit in?
  • emu: Design patterns are what you choose for wallpaper and carpets
  • kyevan: My skull is already mostly duct tape. And I'm only on page 25 of YAHT!
  • shapr: There's an important niche market for OSes that don't crash.

Code Watch

Tue Dec 5 23:18:45 PST 2006. Simon Peyton Jones. Improve dependency analysis makes more dictionaries inlinable.

Sat Dec 9 09:42:03 PST 2006. Ian Lynagh. Add PowerPC to the list of SMP arches

Mon Dec 11 14:25:34 PST 2006. Wolfgang Thaller. Support MO_WriteBarrier in PowerPC NCG (lwsync instruction).

About the Haskell Weekly News

Each week, new editions are posted to the Haskell mailing list as well as to the Haskell Sequence and Planet Haskell. RSS is also available, and headlines appear on haskell.org. Headlines are available as PDF. The Haskell Weekly News is also available in Spanish translation.

To help create new editions of this newsletter, please see the contributing information. Send stories to dons at cse.unsw.edu.au. The darcs repository is available at darcs get http://www.cse.unsw.edu.au/~dons/code/hwn

Haskell Weekly News: December 05, 2006

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

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

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

Announcements

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

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

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

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

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

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

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

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

Haskell'

This section covers the Haskell' standardisation process.

Libraries

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

Discussion

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

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

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

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

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

Blog noise

Haskell news from the blogosphere.

Quotes of the Week

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

Code Watch

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

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

About the Haskell Weekly News

Each week, new editions are posted to the Haskell mailing list as well as to the Haskell Sequence and Planet Haskell. RSS is also available, and headlines appear on haskell.org. Headlines are available as PDF. The Haskell Weekly News is also available in Spanish translation.

To help create new editions of this newsletter, please see the contributing information. Send stories to dons at cse.unsw.edu.au. The darcs repository is available at darcs get http://www.cse.unsw.edu.au/~dons/code/hwn