General News

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

Haskell Weekly News: November 28, 2006

Submitted by dons on Mon, 11/27/2006 - 6:53pm.

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

Automated testing fever strikes the camp, with three new QuickCheck-related libraries and tools released.

Announcements

  • QuickCheck 2 development version. Bjorn Bringert announced that the development version of QuickCheck 2 is now available in a public darcs repository. Highlights of the new QuickCheck version include: shrinking of failing test cases; supports testing monadic code; handles exceptions gracefully; coarbitrary has moved to a separate class; type-level modifiers for changing test data generation (e.g. NonNegative); function table printing; and user-defined actions when properties fail. The source is available via darcs.

  • PQC: QuickCheck in the Age of Concurrency. Don Stewart announced PQC: Parallel QuickCheck. PQC provides a single module: Test.QuickCheck.Parallel. This is a QuickCheck driver that runs property lists as jobs in parallel, and will utilise as many cores as you wish, with the SMP parallel GHC 6.6 runtime. It is simple, scalable replacement for Test.QuickCheck.Batch.

  • cabal-test: automatic testing for Cabal projects. David Himmelstrup announced cabal-test, the automatic tester for Cabal projects. The cabal-test tool is capable of testing embedded QuickCheck properties in any and all cabalized projects. The tests are currently executed in parallel with PQC. QuickCheck properties can reside anywhere in the code and don't have to be exported. The darcs repo is available.

  • Streams 0.1.7. Bulat Ziganshin announced Streams version 0.1.7, a fast extensible I/O and serialization library. Changes include: GHc 6.6 support, support for files larger than 4G on Windows, haddock documentation.

  • Ranged Sets 0.0.3. Paul Johnson announced the 0.0.3 release of Ranged Sets. Ranged sets allow programming with sets of values described by a list of ranges. A value is a member of the set if it lies within one of the ranges. The ranges in a set are ordered and non-overlapping, so the standard set operations can be implemented by merge algorithms in O(n) time.

  • Type-class overloaded functions. Oleg Kiselyov presented functions polymorphic over classes of types. Each instance of such (2-polymorphic) function uses ordinary 1-polymorphic methods, to generically process values of many types, members of that 2-instance type class. The typeclass constraints are thus manipulated as first-class entities. We also show how to write typeclass instances with back-tracking: if one instance does not apply, the typechecker will chose the `next' instance -- in the precise meaning of `next'.

  • Cabal mode for emacs. Matthew Danish released a small (and developing) major mode for editing Cabal files in emacs.

  • YCR2JS Programmers Guide Draft. Dimitry Golubovsky announced the draft of low-level programming guide for Yhc Core to Javascript converter. Everyone interested in future use of this tool is encouraged to read and review the Guide. Its purpose is to give some ideas about interaction of Haskell programs converted into Javascript with a web browser on the lowest possible level, without application frameworks and support libraries (just because these haven't been developed).

  • NeHe Tutorials in Haskell. Jason Dagit announced the availability of the (somewhat) famous NeHe tutorials for OpenGL have been ported to HOpenGL. A darcs repository is provided.

Haskell'

This section covers the Haskell' standardisation process.

Discussion

  • The Future of MissingH. John Goerzen opened a discussion on the future development of MissingH, in order to improve usability and adoption by the community. It was felt that the current monolithic structure, and nondescript naming raises the barrier to use.

  • Controlling backtracking with the list monad. Isto posed an interesting question about whether the backtracking in a list monad could be controlled, producing a nice way to build branch and bounding algorithms

  • Lifting conditionals. Dougal Stanton asked about lifting if/then/else into the IO monad, revealing some interesting subtleties in the implementation

  • Cheap commits for improving the library documentation. Don Stewart created a new page, for non-core contributors to submit suggestions on improving library documentation. Rather than require the user to produce a darcs patch, than can instead add their change to the wiki page. Ideally, a wiki-editable version of the entire haddock docs would be desired

  • Optimising a hash function. Ivan Tomac asked about optimising low-level bit shifting code to run close to C speed.

  • Common subexpression elimination. Christian Maeder asked about common subexpression elimination in GHC.

  • Passing arrays between Haskell and C without overhead. Brian Hulley asked for advice on how best to bind to a C library, from Haskell, such that data can be passed with zero copying.

  • Creating Loadable Dynamic libraries Libraries in OSX. Alfonso Acosta described how to create dynamic loadable libraries (.so) with GHC 6.6 under Linux X86 using some C glue code and linking with -optl -shared. Advice was sought on porting this to OSX.

Conference roundup

Fun in the Afternoon
  • Links: web programming without tiers. Phil Wadler.

  • Mechanized Metatheory Model-Checking. James Cheney. Syntactic techniques based on operational semantics and type systems are extremely useful for studying the metatheory of logics and programming languages. However, proving properties of such systems is often an onerous task, because there are often a large number of 'standard' or straightforward cases. It is tempting to cut corners and do careful proofs only for cases that seem interesting, but this can easily lead to a counterexample being missed. It therefore seems attractive to try to formalize such proofs in order to ensure their validity. However, this cure is often worse than the disease, since theorem proving tools tend to have a high learning curve. Moreover, theorem proving generally addresses the uncommon case of formalizing an informal proof of a well-understood system which has stood the test of time, rather than the common case of finding a bug in a poorly-understood system that may still be under development.

  • A Principled Approach to Version Control. Wouter Swierstra. Version control systems are essential for managing the distributed development of large software pro jects. We present a formal model for reasoning about version control. In particular, we give a general definition of patch. Patches abstract over the data on which they operate, making our framework equally suited for version control of everything from highly-structured XML files to blobs of bits. We model repositories as a multiset of patches. The mathematical definitions of patches and repositories enable us to reason about complicated issues such as conflicts and conflict resolution.

  • C\# is a functional programming language. Andrew Kennedy. Polymorphic functions, parameterized types, lambda expressions, type inference, streams, GADTs, and combinator libraries: these are features usually associated with functional languages such as Haskell and ML. In this talk I will show how the design of C\# 3.0, launching next year, was strongly influenced by ideas from functional programming, and supports all these features. I will use classic examples from the functional programming literature to illustrate the talk.

Blog noise

Haskell news from the blogosphere.

Quotes of the Week

  • Cale: GADT pattern match in non-rigid context. There are prescriptions available for that sort of thing.
  • Bulat: Base lib includes everything, from 'const' to starship control
  • Cale: I should actually think before coding, but the type system is so good.
  • Syzygy-: Why do I get the feeling that the arrow code was written during 'Speak like a pirate day'?
  • SamB: [on the subject of fromJust] thinks that unJust would be a more fun name for that
  • apfelmus: Ah, yet another UndeadArray necromancer exhausting his stack of bones. May the forces of light suggest to structure the incantation of darkness?
  • dons: Ah, it *is* like Haskell. I see: Jiffy Pop is the family fun treat. No other brand of popcorn offers a self-contained popping pan. It can even be used outdoors.
  • thetallguy: Using and advocating Haskell is like being Calvin (and Hobbes). To you, it's alive, real, a true delight. To those who know better, it's a stuffed tiger.

Code Watch

  • Mon Nov 27 05:06:02 PST 2006. Wolfgang Thaller. Initial support for x86_64-darwin. Basic -fvia-C code generation is there, not much testing.

  • Fri Nov 24 15:05:48 PST 2006. simonpj. Fix constraint handling for lazy patterns. Lazy patterns are quite tricky! Consider f ~(C x) = 3. Can the Num constraint from the 3 be discharged by a Num dictionary bound by the pattern? Definitely not! See Note 'Hopping the LIE in lazy patterns' in TcPat. The type checker wasn't ensuring this, and that was causing all manner of strange things to happen. It actually manifested as a strictness bug reported by Sven Panne.

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: November 22, 2006

Submitted by dons on Wed, 11/22/2006 - 6:32am.

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

This week a new release of the Haskell XML Toolbox, and details for the inaugural Haskell Hackathon are announced. And the HWN half century of issues is on the board!

Announcements

  • Haskell XML Toolbox 7.0. Uwe Schmidt released a new version of the Haskell XML Toolbox. New in 7.0 is a module for XSLT transformation. The XSLT module implements most of the XSLT standard. The development of the XSLT module is done by Tim Walkenhost in his master thesis, describing the design of the transformer (and the limitations) is included in the distribution. HXT 7.0 works with ghc-6.4 and ghc-6.6. A tutorial is available in the Haskell wiki.

  • Hac: Haskell Hackathon 2007. The Hac organisers announced that the inaugural Haskell Hackathon, Hac 2007, will be held at Oxford University Computing Laboratory, January 10-12, 2007. The plan is to hack on Haskell infrastructure, tools, libraries and compilers. To attend please register, and get ready to hack those lambdas!

  • System.FilePath 0.11. Neil Mitchell announced the release of System.FilePath 0.11, a library for manipulating FilePath's correctly on both Posix and Windows.

  • Darcs release candidate. Tommy Pettersson announced it's time for a new darcs release candidate, 1.0.9rc2. There will probably be yet another release candidate (rc3) before final 1.0.9. Get testing!

  • Safe library 0.1. Neil Mitchell announced the release of Safe library, 0.1. People often have a problem with pattern match errors, and the only helpful message they get is: 'pattern match error'. The Safe library hopes to eliminate some of the frustration this causes by providing versions of these partial functions with more helpful error messages.

  • LocH, located errors 0.1. Don Stewart announced the release of LocH, a small Haskell module providing source location-specific error messages and debugging strings for Haskell code. It uses the compiler-expanded 'assert' token, rather than cpp or m4, to provide a lightweight approach to generating source locations. No preprocessor is required. More information is available at the LocH site, including API documentation.

  • Starting your own Haskell project. Jason Dagit and Don Stewart expanded on the document describing how best to set up a new Haskell project, leading to the creation of mkcabal,a new tool for setting up cabalised Haskell projects.

Haskell'

This section covers the Haskell' standardisation process.

Libraries

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

Discussion

  • New Arrows tutorial. Tim Newsham wrote a small arrows tutorial, and is looking for feedback.

  • Yhc.Core backends for Haskell/Javascript/C. Neil Mitchell asked about the direction the Yhc Core backends should take.

  • The Burrows Wheeler Transformation. Jon Fairbairn proposed a game to find the most elegant implementation of the Burrows Wheeler transformation and its inverse.

  • More fusion. Claus Reinke described a method for avoiding the O(n) overhead of cons in strict ByteStrings. Some alternative strategies were also suggested.

  • Extending TypeEq: topEq for types. Nicolas Frisby described a solution to an interesting type problem using TypeEq, Oleg followed up with an alternate solution

  • Debugging by the rules. Don Stewart described an idea to use rewrite rules to change mysterious failing functions to more useful variants. More details on using rewrite rules for various ticks have been collected on the wiki.

  • Generalising zip. Jason Dagit wondered about a generalisation of zip to encode functions like isPrefixOf

  • Heterogeneous collections. Valentin Gjorgjioski asked about techniques for heterogeneous data in Haskell. Several solutions were suggested, and a new wiki page collects the details.

Blog noise

Haskell news from the blogosphere.

Quotes of the Week

  • Larry Wall: People who succeed in brushing up on Haskell do so by brushing up lazily.
  • xerox: [dons] then again, bots themselves are simple. [xerox] '...they are just a morphism in the category of IRC channels together with an endomapping ...'
  • Dave Love: Presumably people with the taste to program in Haskell will use Emacs anyway.
  • Baughn: I know I always have trouble explaining what the weather is like without involving foldr somehow.
  • Korollary: Darcs is free of chemical toxins of big pharma. It's made using all natural herbs and other woo. It's good for you. Cheers.
  • Pseudonym: A 'newbie', in Haskell, is someone who hasn't yet implemented a compiler. They've only written a monad tutorial.
  • astrolabe: I guess missile launching would have to be in IO
  • dons: Java's type system is unsuitable for young children, the elderly or infirm of constitution
  • earthy: The Haskell standard Prelude is ... a treasure trove. But it does require breaking your mind and reassembling the pieces to unlock the trove.
  • emu: Hijack the stack and take this compiler to Fun-land!
  • norpan: The comonad of the No monad is the Yes monad?
  • robreim: I'm in your base hacking all your lambdas
  • shapr: I was chatting with someone who writes Haskell and at some point they said they're not an academic, and I said that too. And then there was what I perceived to be a small disbelieving silence...
  • simonpj: Maybe if I had an Oleg implant I could express all this in the type system
  • skew: [On the subject of strictness] There is a sequet incantation.
  • ski: Please talk to your son or daughter about parametric polymorphism
  • wadler: The way we can tell it's C# instead of Haskell is because it's nine lines instead of two.

Code Watch

  • Wed Nov 8 09:14:52 PST 2006. Alexey Rodriguez. Addition of PAPI to the RTS. PAPI is a library that supports use of the performance counters built into most CPUs for measuring things like cache misses and branch mispredictions. Alexey Rodriguez has added support for PAPI to the RTS, so we can take measurements of any of the CPU performance counters during the run of a Haskell program, and we even separate out results for the GC from results for the mutator.

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: November 14, 2006

Submitted by dons on Mon, 11/13/2006 - 9:03pm.

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

This week we see the announcement of a Haskell to Javascript compiler project, and the overhaul of GHC's typeclass machinery is complete.

Announcements

  • Compiling Haskell to Javascript: YCR2JS. Dimitry Golubovsky announced Ycr2js, a sub-project within the York Haskell Compiler (Yhc) project. It is aimed to create a tool to convert an arbitrary Haskell program into Javascript which in turn may be executed in any Web browser. With great amount of help from the Yhc Team, the converter has been integrated into the Yhc project, and initial stage of coding and development has been completed. More documentation.

  • System.FilePath 0.10. Neil Mitchell announced System.FilePath 0.10, which hopefully is pretty close to final. This library manipulates FilePath's correctly on both Posix and Windows.

  • Major typeclass overhaul. Simon Peyton-Jones mentioned that for some time he has been promising an overhaul of GHC's type inference machinery to fix the interactions between type classes and GADTs. This overhaul has now been completed, and user-visible changes are summarised, including: GHC's type inference becomes complete, the restriction that every constraint in a type signature must mention at least one of the quantified type variables is lifted, dictionaries are packaged in data constructors and the proper interaction between GADTs and type classes is now respected.

  • Implementing the lambda calculus. Lennart Augustsson wrote about implementing interpreters for the lambda-calculus in Haskell, to experiment with different implementation methods.

  • Great language shootout: reloaded. Don Stewart mentioned that now GHC 6.6 is available on the shootout machines, the time has come to improve the existing language shootout entries. Improvements can be posted to the wiki for review.

Haskell'

This section covers the Haskell' standardisation process.

Libraries

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

Discussion

  • Choosing a Haskell GUI library. Bulat Ziganshin asked for advice on which Haskell gui library to use. Several suggestions were made.

Conference roundup

Asian Symposium on Programming Languages and Systems (APLAS 2006)
  • Type Processing by Constraint Reasoning. Peter Stuckey. Paper.

  • Principal Type Inference for GHC-Style Multi-Parameter Type Classes. Martin Sulzmann, Tom Schrijvers and Peter J Stuckey. Paper.

  • Automatic Testing of Higher Order Functions. Pieter Koopman and Rinus Plasmeijer. Paper.

Jobs

  • Research position in spatial cognition (Haskell-related). Till Mossakowski announced the availability of a Doctoral Research Assistant / Postdoctoral Researcher position at the Universität Bremen, concerned with classification and formalization of qualitative spatial calculi, relations among these calculi, spatial ontologies, and route graphs. More information.

Blog noise

Haskell news from the blogosphere.

Quotes of the Week

  • dylan: I remember being introduced to lambdas (in perl) from the programming perl, 2nd edition book. I used them heavily ever since... like some kind of cocaine addiction.
  • jdunck: What's your safeword?
  • sketerpot: With very strict typing, you need an *unsafe*word.
  • Binkley: Can you represent 'more moronic than Slashdot' with a 32-bit integer?
  • Robert Dockins: A Turing-complete type-checker isn't enough! Our work is not complete until the parser is a universal machine as well!
  • dons: Disable the type checker in GHC for 6 months and we'd have 5 Haskell debuggers by the end of it.
  • lennart: System Verilog is one of the worst 'designs' I've ever seen. So I bet it will be popular
  • lispy: The biggest reason most developers I know don't fix a bug is because they don't know it exists yet
  • monochrom: Time flies like an arrow. Fruit flies like a banana. Syntax rules like a macro
  • robreim: [on the new #haskell lojban channel] Great, now we've got to start an IRC channel for lojban-speaking, Haskell-coding anarchists
  • syntaxfree: Yes, Wadlerman: Prince of Funktions

Code Watch

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.

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: November 08, 2006

Submitted by dons on Tue, 11/07/2006 - 10:41pm.

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

Announcements

  • SmallCheck 0.2. Colin Runciman announced that SmallCheck 0.2, a lightweight testing library for Haskell, is out, and can be obtained. Since version 0.1: there's now a choice of interactive or non-interactive test-drivers using iterative deepening; more pre-defined test-data generators, including revised Int, Integer, Float, Double, Nat and Natural and additional examples. SmallCheck is similar to QuickCheck but instead of testing for a sample of randomly generated values, SmallCheck tests properties for all the finitely many values up to some depth, progressively increasing the depth used.

  • Hoogle Command Line 3 Beta. Neil Mitchell released Hoogle Command Line version 3 Beta, an alternative to the Hoogle website. Hoogle lets you search for Haskell functions by name and by type signature.

  • The Monad.Reader. Wouter Swierstra issued a call for submissions for articles for the next issue of The Monad.Reader. There are a large number of conferences and journals that accept research papers related to Haskell; unfortunately, the platform for non-academic publications is far less developed. This is where The Monad.Reader fits in. So if you are tossing around some ideas, write it up, and submit! Deadline for submissions is January 19th, 2007.

  • Haskell Communities and Activities Report. Andres Loeh reminded us that the deadline for the November 2006 edition of the Haskell Communities and Activities Report is now! -- there may still be just 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. For more info see the call for contributions.

  • HsMan. Frederik Eaton announced hsman, a tool that indexes Haddock-generated HTML files, and allows users to search for functions and also GHC manual topics.

  • HaL, Haskell meeting in Leipzig. Johannes Waldmann announced that a local Haskell meeting is to take place on December 5th in Leipzig, Germany. The meeting will be hosted by IBA Consulting. It will be quite informal, with some very short talks (most probably in German). Interessenten sind herzlich eingeladen. Details and (free) registration.

Haskell'

This section covers the Haskell' standardisation process.

Libraries

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

Discussion

  • The OI comonad. Sven Biedermann invoked a discussion about the OI comonad, and provided an example of a simple OI-comonad for stdin/stdout only, that preserves referential integrity.

  • The Bits between the Lambdas. Nuno Pinto asked about Binary IO in Hakell. Several solutions were suggested.

  • Translating Haskell to VHDL. Alfonso Acosta pondered how to write a translator from Haskell to VHDL.

  • New maintainers for wxHaskell. Jeremy O'Donoghue announced that a new team of maintainers in place for wxHaskell, so we're hoping that will see a significant increase in wxHaskell activtiy in the future. Great!

  • Permutation with k levels. Nuno Pinto wondered about generic permute algorithms in Haskell.

Blog noise

Haskell news from the blogosphere.

Quotes of the Week

  • coffeemug: There don't seem to be any definitive sources that suggest Haskell isn't good at something.
  • stevan: Haskell is like all the other functional languages I have read about, but totally different at the same time
  • coffeemug: you can do more with Haskell in less code that's easier to read and maintain in the long run
  • Jeannette Wing: Computational thinking will have become ingrained in everyone's lives when ... trees are drawn upside down
  • monochrom: recursive directory search is an alpha-beta with boring values of alpha and beta
  • skew: Types are largely about writing down the contract of a function once and telling the compiler to keep track of things, rather than trying to get it all straight yourself, and being rewarded with bugs that only manifest during demos...
  • monochrom: They say Mozarts Mass in C minor K427 is uplifting. I'm going to name my next monad transformer or arrow transformer MozartMassInCMinorK427T
  • Ron Jeffries: Dan's assertion, as I recall it, was that Haskell lets us express the program 'in the way we think'. On the contrary, what Haskell does in my opinion is let us express the program in the way Haskell thinks
  • sedd: [On the improving Haskell and Lua scores on the language shootout] This is awesome. It's like watching a match between the team of the town where you're from, and the team of the town where you live. Either way you've got a reason to get drunk after the game.
  • emeijer: Functional programming has finally arrived to the masses. It's name is not Lisp, ML or Haskell: it's Visual Basic
  • audreyt: Because Haskell is such a reasonable language, we reason about it all the time, and we also have a bot to reason it for us when we are lazy
  • spiffy: needs to stop trying to understand monads at night
  • psykotic: spiffy: they're just monoids on the category of endofunctors over some category, what's the big deal?
  • skew: also, if you use ST you know the code is just using mutable variables, rather than formatting your hard drive
  • Baughn: I once explained monads to a non-programmer: 'And? What's so hard about that?'
  • monochrom: The problem is that bad programmers will assess tutorials for good programmers as 'ivory tower', and moreover bad programmers are the vocal majority. It gets you bad press
  • scodil: you say 'sledgehammer' like its a bad thing
  • sjanssen: I suspect that planet.haskell.org has more content on catamorphisms than cats

Code Watch

  • Wed Nov 1 08:43:29 PST 2006. Simon Peyton Jones. Major overhaul of the Simplifier. This big patch completely overhauls the Simplifier. The simplifier had grown old and crufty, and was hard to understand and maintain. This new version is still quite complicated, because the simplifier does a lot, but it's much easier to understand, for me at least.

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.

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: October 31, 2006

Submitted by dons on Mon, 10/30/2006 - 8:02pm.

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

This week we see a number of community documentation and maintenance efforts, and the appearance of indexed data types in GHC

Announcements

  • Associated data types in GHC. Manuel Chakravarty announced the availability of indexed data types, an extension of our earlier proposal for associated data types, in GHC's development version. Detailed information on where to get the right GHC and how to use indexed types is available from the Haskell wiki.

  • Yhc Bytecode library 0.3. Robert Dockins announced the release of the Yhc Bytecode library, version 0.3.

  • Haskell Program Coverage. Andy Gill checked the latest version of HPC, with GHC support, into the head GHC branch

  • Haskell Mersenne Twister. Lennart Augustsson made available his Haskell implementation of the Mersenne Twister random number generator.

  • Haskell-specific Google Search Engine. Don Stewart initialised a Haskell-specific search engine, as part of Google's coop engine system, which seems to do a good job of targeting just Haskell sites, in particular, mailing list items

  • A process for submitting library extensions. The libraries hackers have developed a document describing how to best go about contributing new code to the core Haskell libraries. On a similar note, the GHC team has prepared a page on best practice for GHC submissions.

  • How to create a Haskell project. Don Stewart and Ian Lynagh prepared some guidelines on starting your own Haskell project.

Haskell'

This section covers the Haskell' standardisation process.

Discussion

  • Haskell Quiz/Ruby Quiz. Haskell Hackers have started recording Ruby Quiz solutions on the Haskell wiki. Lots of fun puzzles are available, and its a useful resource if you're learning the language.

  • Infinite, open, statically constrained HLists. Oleg Kiselyov described heterogeneous sequences that admit infinite sequences and permits post-hoc addition of new elements, even to an already infinite sequence.

  • Lexically scoped type variables: new proposal. Ben Rudiak-Gould made a new proposal for scoped type variables.

  • Simple GADT parser for the eval example. Greg Buchholz sought advice on creating evaluators with GADTs

  • Package mounting. Frederik Eaton proposed an alternative design for package mounting extensions to the package system.

  • Function types as instances of Num. Greg Buchholz had an interesting problem using functions as instances of Num

  • Yhc Core file generation. Neil Mitchell suggested that it was time to start taking YHC Core output a bit more seriously, and made some proposals.

  • Parallelism in GHC 6.6 and seq vs. pseq. Simon Marlow noticed that Control.Parallel exports seq when in fact it should probably export pseq.

Jobs

  • Lectureships in Software Engineering. Jeremy Gibbons announced that applications are invited for three new University Lectureships in Software Engineering, at the University of Oxford. For further information, including full details of the application procedure and selection criteria, see here.

Blog noise

Haskell news from the blogosphere.

Quotes of the Week

  • Simon Marlow: In fact, you don't need an evil scheduler, an ordinary scheduler will do this.
  • Conor McBride: My operating hypothesis is that even ordinary schedulers are evil...
  • Larry Wall: Continuations - if you know what they are - I don't need to explain them. If you don't know what they are - you don't want to know.
  • Cale: [discussing names for Haskell, after suggesting Sapphire] Diamond: The Hardest Programming Language on Earth
  • ConorMcBride: So, taking Void to be the colour of the empty bikeshed ...
  • cjeris: I like how you conveniently gloss over the part where your head explodes.
  • dons: C++: Creating blub programmers since 1985
  • mwc: I can only believe that Java is a conspiracy perpetrated by keyboard manufacturers
  • Pseudonym: (:[]) looks like a ninja robot pirate monkey
  • chessguy: We've got satan and beelsebob in here, and talking about unicycling.... this channel is guaranteed to be a bad influence on me now
  • dons: fold (\water dish -> wash water dish) soapywater dishes
  • masklinn: Scheme, on the other hand, is dynamically compiled and thus doesn't 'fail early', it fails as late as it can, which produces weird error unless you're into testing. Beginners never are into testing.
  • Riastradh: Assume that I haven't the faintest idea of what a comonad is, beyond that if a monad goes `voob', then a comonad goes `boov'
  • Anonymous: It is quite possible that 'the ultimate teaching language' was not actually invented when Steele and Sussman came down from the mountain bearing a spool of 9-track magtape...
  • sigfpe: How can Haskell not be the programming language that all mathematicians should learn?
  • Syzygy: > let _'__'_'''_'__'_=2 in _'__'_'''_'__'_
  • ihope>: > let _' __ ___ (____:_____) = __ ____ (_' __ ___ _____); _' _ __ [] = __ in _' (+) 0
  • Syzygy: one thing that stands out is the relatively low distance between thought expressed in my ordinary day-to-day mathematical discourse, and thought expressed in Haskell code

Code Watch

  • Tue Oct 24 14:29:07 PDT 2006. Andy Gill. Haskell Program Coverage. This large checkin is the new ghc version of Haskell Program Coverage, an expression-level coverage tool for Haskell. You can run the coverage tool with -fhpc at compile time. Main must be compiled with -fhpc.

  • Tue Oct 24 02:13:57 PDT 2006. Simon Marlow. Split GC.c, and move storage manager into sm/ directory. In preparation for parallel GC, split up the monolithic GC.c file into smaller part

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.

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: October 24, 2006

Submitted by dons on Mon, 10/23/2006 - 7:39pm.

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

Announcements

  • MissingH 0.16.0. John Goerzen announced that the latest version of MissingH is now available. MissingH is a suite of 'missing' library functions. New features include: render numbers as binary units, a progress tracker, turn QuickCheck tests into HUnit tests, and GHC 6.6 support.

  • SMP parallel Pugs on GHC. Audrey Tang announced that parallel support, on top of GHC's new SMP runtime system, has been added to Pugs, the standard bearer Perl6 implementation.

  • YAHT is now a part of the wikibook. Eric Kow announced that the famous 'Yet Another Haskell Tutorial' has been imported into the Haskell wikibook. Let the great Haskell Remix begin!

Haskell'

This section covers the Haskell' standardisation process.

Discussion

  • Ruby puzzles. Jim Burton mentioned that he was working on the Ruby quiz puzzles in Haskell -- an interesting exercise.

  • DeepSeq and parallel strategies. Chad Scherrer started a bit of a discussion about the connection between the deepSeq function, and Control.Parallel.Strategies.rnf

  • Type level functions. Oleg Kiselyov described how to use type level programming to create a type of constrained lists.

  • Extending the core libraries. Josef Svenningsson started a largish thread on adding a concat.intersperse function to the base library, leading to an interesting discussion on whether the time has come for an formal process for extending core libraries.

  • data Void. Conor McBride proposed adding the type with no inhabitants other than _|_ to the core libraries.

Blog noise

Haskell news from the blogosphere.

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.

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: October 19, 2006

Submitted by dons on Thu, 10/19/2006 - 2:15am.

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

A big week, with a swag of new releases, including the long awaited GHC 6.6.

Announcements

  • GHC version 6.6. The GHC Team announced a new release of GHC! There have been many changes since the 6.4.2 release. For details, see the release notes. Binary builds, source and packages are all found at GHC's home.

  • Haddock version 0.8. Simon Marlow announced Haddock 0.8, including: cabalisation, Hoogle support, image inclusion. Read more.

  • Pugs 6.2.13 released. Audrey Tang announced that after nearly four months of development and 3400+ commits, Pugs 6.2.13, the leading Perl6 implementation written in Haskell, is now available.

  • STM invariants and exceptions. Tim Harris announced that new transactional memory features have been committed to GHC. The main change is to add support for dynamically checked data invariants of the kind described in this paper (pdf). There are two operations: always X :: STM Bool -> STM () and alwaysSucceeds X :: STM a -> STM (). More details in here (pdf).

  • Cabal version 1.1.6 is now available. Duncan Coutts announced that Cabal, the common architecture for building applications and libraries, version 1.1.6 is now available. It is included in GHC version 6.6.

  • Fun in the Afternoon: Thurs 16th Nov in Oxford. Jeremy Gibbons announced that he, Graham Hutton and Conor McBride at Nottingham are organizing a seminar, Fun in the Afternoon, on functional programming and related topics. The idea is to have a small number of talks as an antidote to mid-term blues, three afternoons a year. The hope is that talks will be informal and fun, and that there will be plenty of scope for discussion and chat as well. Looks fun!

  • HC&A Call for Contributions. Andres Loeh asked for contributions towards the 11th Haskell Communities & Activities Report, a bi-annual overview of the state of Haskell as well as Haskell-related projects of all flavours.

  • Generic Haskell version 1.60 (Diamond). Utrecht's Generic Haskell Team announced a new release of Generic Haskell, an extension of Haskell that facilitates generic programming. Generic Haskell includes: type-indexed values and type-indexed types. The Generic Haskell compiler takes Generic Haskell source and produces Haskell code. This release adds support for Generic Views.

  • Streams 0.1 available for GHC 6.6. Bulat Ziganshin announced that the Streams 0.1 library is now compatible GHC 6.6.

Haskell'

This section covers the Haskell' standardisation process.

Discussion

  • GADT terminology. Oleg Kiselyov argued that the term GADT should be reserved for truly generalised algebraic data types, and not just normal data types written in GADT syntax.

  • Extended functionality for record field accessors. Henning Thielemann proposed some record system extensions.

Jobs

Blog noise

Haskell news from the blogosphere.

Quotes of the Week

  • M. David Peterson : With the help of our friendly local ex-professors and Haskell geeks Dr. Meijer and Dr. Lämmel, I have learned to stop worrying and love monad comprehensions
  • SamB: O(n^2) is better than O(hair-gone)
  • chessguy: I didn't think Pennsylvania had anybody cool enough to know Haskell in it
  • int-e: What, unsafeCoerce# is kind-preserving? How boring!
  • lennart: Floating point numbers are terrible. I maintain that before using them people should have an floating point drivers license
  • xerox: #haskell is a good code optimizer.
  • sigfpe: Haskell is so strict about type safety that randomly generated snippets of code that successfully typecheck are likely to do something useful, even if you've no idea what that useful thing is.

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.

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: October 10, 2006

Submitted by dons on Mon, 10/09/2006 - 8:38pm.

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

Developments this week include Lennart Kolmodin's new inotify bindings for Haskell, work begins on Spanish translations of Haskell literature, and new versions of Darcs and Cabal are tagged

Announcements

  • hinotify 0.1. Lennart Kolmodin announced hinotify 0.1, a library to inotify which has been part of the Linux kernel since 2.6.13. inotify provides file system event notification, simply add a watcher to a file or directory and get an event when it is accessed or modified. API and source.

  • Monad Transformer Tutorial. Martin Grabmueller published a small tutorial on using monad transformers. In contrast to others approaches, it concentrates on using them, not on their implementation. PDF and Literate Haskell source available.

  • Speaking Haskell in Spanish. Luis Araujo announced a project to make Haskell documentation more available to Spanish speakers. The idea is to collect information in Spanish about Haskell, including news and tutorials, and to translate Haskell wiki pages.

  • Haskell Packages 6.6. Isaac Jones announced that the Cabal package tools for Haskell are in a good state, with almost 30 packages already in the database. Time to start testing packages, starting with the cabal release candidate that'll go into GHC 6.6, to make sure they work nicely together!

  • Cabal-1.1.6 release candidate. Duncan Coutts released a tarball for the next 1.16 Cabal release candidate. Let's get this tested before GHC 6.6 arrives!

  • Darcs 1.0.9 release candidate. Tommy Pettersson announced the first release candidate for next stable darcs, 1.0.9rc1. This will mainly be a bug fix version to get things right that got wrong or didn't get right in 1.0.7 and 1.0.8, but there are some new features and optimizations too.

  • Haskell and Vim. Marc Weber wrote some Vim scripts to ease various Haskell coding tasks in Vim.

Haskell'

This section covers the Haskell' standardisation process.

Discussion

  • Allowing both prefix unary minus and right section subtraction. Michael Shulman described a technique for writing operators that can be used both as infix or postfix operators, using the new postfix support in GHC 6.6.

  • Google Summer of Code Summit and Haskell. Don Stewart sought feedback on this year's Google Summer of Code Haskell projects, in preparation for Haskell.org's attendance at the Google SoC Summit.

  • GHC under Wine. Robert Marlow described his experience setting up GHC under Wine to produce Windows binaries from Linux.

  • Function lists and arguments. Joel Koerwer described a puzzle to try to apply a function of type a function of type (a -> a -> ... -> a -> a), to a list of arguments of the same length. Some solutions were suggested.

Conference roundup

Jobs

  • Open assistant professorship at Utrecht. Doaitse Swierstra announced a 5 year position for an assistant professor at Utrecht. Current areas of interest include: domain specific embedded languages, programming language design and implementation, generic programming, program verification, advanced type systems. More info.

  • PhD studentship. Shengchao Qin announced that applications are invited for a PhD student to work on resource analysis and verification for dependable embedded software, at the University of Durham. The successful applicant should have a good background in program analysis, type systems and type theory, software verification and embedded systems.

  • Post-doctoral position. Stephan Merz announced that applications are invited for a post-doctoral fellowship on the modeling and verification of domain-specific languages in the MOSEL team at LORIA. The project aims to model domain-specific languages in the specification language TLA+ and to develop verification techniques for programs written in DSLs against high-level correctness properties. Candidates must hold a PhD and should have demonstrated research interest in formal methods and formal reasoning. They should preferably have experience with interactive proof assistants.

Blog noise

Haskell news from the blogosphere.

Quotes of the Week

  • Larry Wall: Perl is turning into Haskell. Someone shoot me.
  • Tim Berners-Lee [and the w3c]: Functional languages such as Haskell ... facilitate the creation of programs that may be easier to analyze than their imperative equivalents.
  • lispy: > init . map snd . filter fst . zip (fix ([True, False] ++)) . ap (zipWith (+)) tail . map length . group . fix $ show
  • lambdabot: [2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536,131072,...
  • Verity Stob: Lisp is still #1 for key algorithmic techniques such as recursion and condescension.
  • dcoutts: (:[]) looks like a monster
  • largos: [on programming languages] ...and I'd rather not own as much rope as c/c++ gives you.
  • ozone: When will bytestring be O(1) for all operations?
  • skew: [Monads are] just like the sequences of statements in other languages. Except very rarely have they thought so deeply about what that sequencing means

Code Watch

  • Stand-alone deriving declarations added. bringert. Add support for stand-alone 'deriving' declarations. The main motivation for this is to allow you to use the instance deriving mechanism for data types and newtypes declared in other modules, for example if you want to use generics with existing code that does not derive Typeable and Data, or want to use Show for debugging. The syntax is: deriving Class for Type, and for multi-parameter type classes:: deriving (Class t1 ... tn) for Type

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.

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