Haskell Weekly News

Haskell Weekly News: May 07, 2007

Submitted by dons on Sun, 05/06/2007 - 11:48pm.

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

This week sees the release of Atom, a hardware description language embedded in Haskell, along with the usual suite of new libraries and tools. In addition, The Monad.Reader Issue 7 was released, and the hackage upload festival continues unabated.

Announcements

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

The Monad.Reader: Issue 7. Wouter Swierstra announced the latest issue of The Monad.Reader. The Monad.Reader is a quarterly magazine about functional programming. It is less-formal than journal, but somehow more enduring than a wiki page or blog post.

HDBC: Haskell Database Connectivity. John Goerzen announced that HDBC 1.1.2 is now released. HDBC provides an abstraction layer between Haskell programs and SQL relational databases. This lets you write database code once, in Haskell, and have it work with any number of backend SQL databases.

FileManip: Expressive Filesystem Manipulation. Bryan O'Sullivan announced the FileManip package provides expressive functions and combinators for searching, matching, and manipulating files.

photoname: manipulate photos using EXIF data. Dino Morelli announced the release of photoname, a command-line utility for renaming and moving photo image files. The new folder location and naming are determined by two things: the photo shoot date information contained within the file's EXIF tags and the usually-camera-assigned serial number, often appearing in the filename.

RSA-Haskell: Command-line Cryptography. David Sankel announced the release of RSA-Haskell, a collection of command-line cryptography tools and a cryptography library written in Haskell. It is intended to be useful to anyone who wants to secure files or communications or who wants to incorporate cryptography in their Haskell application.

Haskell modes for Vim. Claus Reinke summarised the various Haskell/Vim support currently available

French Translation of Gentle Introduction to H98. The haskell-fr team announced a completed a translation into French of the 'Gentle Introduction to Haskell'.

Haskell'

This section covers the Haskell' standardisation process.

Hackage

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

Discussion

The Proper Definition of (evaluate :: a -> IO a). Isaac Dupree described a variant of evaluate with modified semantics to the current implementation.

Why is Data.Set not a monad?. Dan Doel documented the reasons why Data.Set is not currently an instance of Monad.

Chaos. Andrew Coppin announced chaos, a fun image generating mystery program.

The Functional Pearls. Don Stewart collected the functional pearls known to be available online, on to a single page on the Haskell wiki.

Blog noise

Haskell news from the blogosphere.

Quotes of the Week

  • Oleg K: So, `bind' is `let' and monadic programming is equivalent to programming in the A-normal form. That is indeed all there is to monads
  • kc5tja: Premature evil is the root of all optimization
  • Tommah: Remember, kids: if you program in a language with side effects, the terrorists win.
  • ndm: Comments are for people who can't sense what their code does from the indentation
  • jcreigh: GHC has lots of interesting features above Haskell98, I've noticed. 'You can take the red pill or the blue pill...' 'Hmm. What's the green pill?' 'What? Oh. That's GHC.'
  • schluehk: It's about a variant of the other big Haskell credo: once it compiles it works. Once you have written a prototype you have also a spec. If this is not agile I don't know what? It is a quite remarkable inversion. Formerly people wanted tools that are so versatile that they let them express almost everything with great ease and where they didn't care a lot about speed optimizations and corner cases in the early iterations. Now people want tools that restricts intentionally their expressivity to let them do big upfront design as source code. They want to be guided to initial perfection. Let's face it: Haskell has quite some momentum in the dialectic move.

Code Watch

Notable new features and bug fixes to the Haskell compilers.

Thu May 3 06:19:55 PDT 2007. Simon Marlow. Add history/trace functionality to the GHCi debugger. The debugger can now log each step of the evaluation without actually stopping, keeping a history of the recent steps (currently 50). When a (real) breakpoint is hit, you can examine previous steps in the history (and their free variables) using the :history, :back and :forward commands.

Wed May 2 09:34:57 PDT 2007. Simon Peyton-Jones. Make records work properly with type families. This fixes Trac #1204. There's quite a delicate interaction of GADTs, type families, records, and in particular record updates.

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: April 27, 2007

Submitted by dons on Thu, 04/26/2007 - 10:52pm.

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

The last week was a very exciting week for the Haskell community, with a new GHC release, the first release of Xmonad, a window manager written in Haskell, and DisTract, a new distributed bug tracker, written in Haskell. A number of new Haskell jobs were announced, and several new user groups were formed!

Announcements

GHC 6.6.1. Ian Lynagh announced a new patchlevel release of GHC. This release contains a significant number of bugfixes relative to 6.6, so we recommend upgrading. Release notes are here. GHC is a state-of-the-art programming suite for Haskell. Included is an optimising compiler generating good code for a variety of platforms, together with an interactive system for convenient, quick development. The distribution includes space and time profiling facilities, a large collection of libraries, and support for various language extensions, including concurrency, exceptions, and foreign language interfaces.

Xmonad 0.1. Spencer Janssen announced the inaugural release of Xmonad. Xmonad is a minimalist tiling window manager for X, written in Haskell. Windows are managed using automatic layout algorithms, which can be dynamically reconfigured. At any time windows are arranged so as to maximise the use of screen real estate. All features of the window manager are accessible purely from the keyboard: a mouse is entirely optional. Xmonad is configured in Haskell, and custom layout algorithms may be implemented by the user in config files.

DisTract: Distributed Bug Tracker implemented in Haskell. Matthew Sackman announced DisTract, a Distributed Bug Tracker. We're all now familiar with working with distributed software control systems, such as Monotone, Git, Darcs, Mercurial and others, but bug trackers still seem to be fully stuck in the centralised model: Bugzilla and Trac both have single centralised servers. This is clearly wrong, as if you're able to work on the Train, off the network and still perform local commits of code then surely you should also be able to locally close bugs too. DisTract allows you to manage bugs in a distributed manner through your web-browser. The distribution is achieved by making use of a distributed software control system, Monotone. Thus Monotone is used to move files across the network, perform merging operations and track the development of every bug. Finally, the glue in the middle that generates the HTML summaries and modifies the bugs is written in Haskell.

IOSpec 0.1. Wouter Swierstra announced the first release of the Test.IOSpec library, that provides a pure specification of some functions in the IO monad. This may be of interest to anyone who wants to debug, reason about, analyse, or test impure code. Essentially, by importing libraries from IOSpec you can the same code you would normally write in the IO monad. Once you're satisfied that your functions are reasonably well-behaved, you can remove the Test.IOSpec import and replace it with the 'real' functions instead.

wl-pprint-1.0: Wadler/Leijen pretty printer. Stefan O'Rear announced wl-pprint-1.0, the classic Wadler / Leijen pretty printing combinators, now in 100% easier to use Cabalised form! PPrint is an implementation of the pretty printing combinators described by Philip Wadler (1997). In their bare essence, the combinators of Wadler are not expressive enough to describe some commonly occurring layouts. The PPrint library adds new primitives to describe these layouts and works well in practice.

London Haskell User Group. Neil Bartlett announced the first meeting of the London Haskell User Group on Wednesday 23rd May from 6:30PM. The meeting will be held at City University's main campus in central London, and Simon Peyton Jones will be coming to give a talk.

New York Functional Programmers Network. Howard Mansell announced a New York area-based network for Haskell (and functional) programmers. The idea is to have a regular meeting through which functional programmers can meet to discuss experiences, get and give information, find jobs.

Data.Proposition 0.1. Neil Mitchell announced the release of Data.Proposition, a library that handles propositions, logical formulae consisting of literals without quantification. It automatically simplifies a proposition as it is constructed using simple rules provided by the programmer. Implementations of propositions in terms of an abstract syntax tree and as a Binary Decision Diagram (BDD) are provided. A standard interface is provided for all propositions.

Book reviews for the Journal of Functional Programming. Simon Thompson sought interested contributors for book reivews for the Journal of Functional Programming. There is a list of books currently available for review.

Reminder: HCAR May 2007. Andres Loeh reminded us that the deadline for the May 2007 edition of the Haskell Communities and Activities Report is only a few days away -- but this is still enough time to make sure that the report contains a section on your project, on the interesting stuff that you've been doing; using or affecting Haskell in some way.

Template 0.1: Simple string substitution. Johan Tibell announced a simple string substitution library that supports substitution ala Perl or Python.

hpaste for emacs. David House announced hpaste.el, an Emacs Lisp library that integrates hpaste, the Haskell pastebin, into Emacs. It provides two functions, hpaste-paste-region and hpaste-paste-buffer, which send the region or buffer to the hpaste server as required.

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.

Discussion

GHC Release Plans. Simon Marlow initiated a discussion on possibe release timelines for upcoming GHC versions.

More inlining. Duncan Coutts asked about more fine grained control over inlining in GHC, to ease term rewriting with RULES

Haskell version of Norvig's Python Spelling Corrector. Pete Kazmier spawned a long thread covering various implementations of spelling correctors in Haskell

Jobs

Quantitative Functional Programmer. Credit Suisse. The Global Modelling and Analytics Group (GMAG) is responsible for producing state-of-the-art pricing, trading and hedging models for Credit Suisse. These models are used across a range of businesses in the Fixed Income and Equity Divisions. The groups mandate covers all major asset classes including Credit Derivatives, Commodities, Emerging Markets, Equity Derivatives and Convertibles, Exotics, Foreign Exchange, Fund Linked Products, Interest Rate Products and Mortgage Derivatives. GMAG operates globally with 85 members located in New York, London, Hong Kong and Tokyo. We are currently building a Domain Specific Language (embedded in Haskell) that will be used within GMAG. We require intelligent, motivated people to develop and extend this language. These individuals will also work with modellers to aid them in effectively applying these new tools.

Haskell programmer positions. HAppS. HAppS LLC has part-time and full-time positions open for Haskell programmers to: improve the open source Haskell codebase at HAppS.org; implement infrastructure to make it work well in Amazon S3/EC2 environments; make http://pass.net reliable enough to be used by live apps; build the mass market apps we want to run on top of the HAppS/Pass.net platform. We are looking for people who: have substantial experience programming Haskell; have experience building Internet apps (not necessarily in Haskell but would be good), and live in any of these places: the Internet, New York, San Francisco Los Angeles.

Vacancy for a PhD student. Johan Jeuring announced a vacancy for a PhD student in the Strategy Feedback project. Knowledge of Haskell is a big plus; implementation of most of the tools will be done in Haskell. Length: 1+3 years, Open University the Netherlands, Location: Heerlen.

Blog noise

Haskell news from the blogosphere.

Quotes of the Week

  • apfelmus: Programming in Haskell is like dual-wielding two light sabers whereas programming in imperative languages is like being equipped with a blunt kitchen knife.
  • mwc: C++ is multiparadigm in the same way a dog with 4 table legs nailed onto it is an octopus
  • ptolomy: Sometimes Haskell feels like a personal trainer for proper program construction. You half-ass something, and the compiler doesn't let you get away with it and won't let you move on until you do it right.
  • dons: I wish you success and may your lambdas always beta reduce
  • quicksilver: May your years be long and your type inference algorithms sound.
  • inverselimit: So I tried as my first project in Haskell to write something that decomposes modules of polynomials using Schur-Weyl duality. This turned out to be a little tricky without being comfortable with the syntax
  • jcreigh: Could not find instance Ord for type ProgrammingLanguage

Code Watch

Apr 19 07:23:58 PDT 2007. Simon Marlow. More debugger improvements. :list shows the code around the current breakpoint. Also it highlights the current expression in bold (the bold/unbold codes are hardwired to the ANSI codes right now, I'll provide a way to change them later). :set stop cmd' causes cmd to be run each time we stop at a breakpoint. In particular, :set stop :list is particularly useful.

Wed Apr 25 03:18:32 PDT 2007. simonpj. Add -fwarn-monomorphism-restriction (on by default) to warn when the MR is used. Users often trip up on the Dreaded Monomorphism Restriction. This warning flag tells you when the MR springs into action. Currently it's on by default, but we could change that.

Thu Apr 26 02:37:19 PDT 2007. Pepe Iborra. New section on debugging lambdas in the ghci user guide

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: 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 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