[Haskell] Haskell Weekly News: November 28, 2006

Donald Bruce Stewart dons at cse.unsw.edu.au
Mon Nov 27 20:09:30 EST 2006

Haskell Weekly News
Issue 51 - November 28, 2006

   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.


     * QuickCheck 2 development version. Bjorn Bringert [1]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
       [2]available via darcs.

   1. http://article.gmane.org/gmane.comp.lang.haskell.general/14511
   2. http://www.cs.chalmers.se/~bringert/darcs/QuickCheck/

     * PQC: QuickCheck in the Age of Concurrency. Don Stewart
       [3]announced PQC: Parallel QuickCheck. [4]PQC provides a single
       module: [5]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.

   3. http://article.gmane.org/gmane.comp.lang.haskell.general/14503
   4. http://www.cse.unsw.edu.au/~dons/pqc.html
   5. http://www.cse.unsw.edu.au/~dons/pqc/Test-QuickCheck-Parallel.html

     * cabal-test: automatic testing for Cabal projects. David
       Himmelstrup [6]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
       [7]darcs repo is available.

   6. http://article.gmane.org/gmane.comp.lang.haskell.general/14519
   7. http://darcs.haskell.org/~lemmih/cabal-test

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

   8. http://article.gmane.org/gmane.comp.lang.haskell.general/14504
   9. http://haskell.org/haskellwiki/Library/Streams

     * Ranged Sets 0.0.3. Paul Johnson [10]announced the 0.0.3 release of
       [11]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.

  10. http://article.gmane.org/gmane.comp.lang.haskell.general/14492/
  11. http://ranged-sets.sourceforge.net/Ranged/

     * Type-class overloaded functions. Oleg Kiselyov [14]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'.

  14. http://thread.gmane.org/gmane.comp.lang.haskell.general/14482/focus=14483

     * Cabal mode for emacs. Matthew Danish [15]released a small (and
       developing) major mode for editing Cabal files in emacs.

  15. http://mapcar.org/haskell/cabal-mode/

     * YCR2JS Programmers Guide Draft. Dimitry Golubovsky [16]announced
       the draft of low-level [17]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).

  16. http://article.gmane.org/gmane.comp.lang.haskell.cafe/16764
  17. http://haskell.org/haskellwiki/Yhc/Javascript/Programmers_guide

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

  18. http://thread.gmane.org/gmane.comp.lang.haskell.cafe/16870/focus=16870
  19. http://codersbase.com/index.php/Nehe-tuts


   This section covers the [20]Haskell' standardisation process.

     * [21]Standard (core) libraries initiative: rationale

  20. http://hackage.haskell.org/trac/haskell-prime
  21. http://thread.gmane.org/gmane.comp.lang.haskell.prime/1919/focus=1919


     * The Future of MissingH. John Goerzen [22]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

  22. http://thread.gmane.org/gmane.comp.lang.haskell.cafe/16819/focus=16819

     * Controlling backtracking with the list monad. Isto [23]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

  23. http://thread.gmane.org/gmane.comp.lang.haskell.cafe/16776/focus=16776

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

  24. http://thread.gmane.org/gmane.comp.lang.haskell.cafe/16779/focus=16779

     * Cheap commits for improving the library documentation. Don Stewart
       [25]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

  25. http://thread.gmane.org/gmane.comp.lang.haskell.cafe/16848/focus=16848

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

  26. http://thread.gmane.org/gmane.comp.lang.haskell.cafe/16849/focus=16849

     * Common subexpression elimination. Christian Maeder [27]asked about
       common subexpression elimination in GHC.

  27. http://thread.gmane.org/gmane.comp.lang.haskell.glasgow.user/11318/focus=11318

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

  28. http://thread.gmane.org/gmane.comp.lang.haskell.glasgow.user/11313/focus=11313

     * Creating Loadable Dynamic libraries Libraries in OSX. Alfonso Acosta. 
        [29]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.

  29. http://thread.gmane.org/gmane.comp.lang.haskell.glasgow.user/11297/focus=11297

Conference roundup

   [30]Fun in the Afternoon

  30. http://sneezy.cs.nott.ac.uk/fun/nov-06/

     * 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

     * 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

   [31]Haskell news from the blogosphere.

     * [32]Scoping, and my Scheme Interpreter
     * [33]XP Day Benelux: the report
     * [34]From Löb's Theorem to Spreadsheet Evaluation
     * [35]A search engine written in Haskell: part two
     * [36]OCaml - First Impressions
     * [37]House: an Operating System Written in Haskell
     * [38]Reverse Engineering Machines with the Yoneda Lemma
     * [39]Haskell and functional programming
     * [40]Query for readers: Interested in Haskell?
     * [41]Why Haskell?
     * [42]What rocks
     * [43]Why pointers and references are a bad thing
     * [44]Reasons to learn C
     * [45]Some Thoughts on Haskell
     * [46]Simon Peyton Jones and Tim Harris explain STM [video]

  31. http://planet.haskell.org/
  32. http://computativestylings.blogspot.com/2006/11/scoping-and-my-scheme-interpreter.html
  33. http://matteo.vaccari.name/blog/?p=59
  34. http://sigfpe.blogspot.com/2006/11/from-l-theorem-to-spreadsheet.html
  35. http://haskell-web.blogspot.com/2006/11/search-engine-written-in-haskell-part_24.html
  36. http://triple.aeoth.net/2006/11/24/ocaml-first-impressions/
  37. http://www.osnews.com/story.php?news_id=16554
  38. http://sigfpe.blogspot.com/2006/11/yoneda-lemma.html
  39. http://chanson.livejournal.com/156835.html
  40. http://scienceblogs.com/goodmath/2006/11/query_for_readers_interested_i.php
  41. http://scienceblogs.com/goodmath/2006/11/why_haskell.php
  42. http://n3dst4.livejournal.com/50393.html
  43. http://kawagner.blogspot.com/2006/11/why-pointers-and-references-are-bad.html
  44. http://www.nekomancer.net/blog/archives/reasons-to-learn-c
  45. http://geeklikemetoo.blogspot.com/2006/11/some-haskell-basics.html
  46. http://channel9.msdn.com/Showpost.aspx?postid=231495

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

     * 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. [47]Initial
       support for x86_64-darwin. Basic -fvia-C code generation is there,
       not much testing.

  47. http://article.gmane.org/gmane.comp.lang.haskell.cvs.ghc/18000

     * Fri Nov 24 15:05:48 PST 2006. simonpj. [48]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.

  48. http://article.gmane.org/gmane.comp.lang.haskell.cvs.ghc/17969

About the Haskell Weekly News

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

   To help create new editions of this newsletter, please see the
   [55]contributing information. Send stories to dons at cse.unsw.edu.au.
   The darcs repository is available at darcs get

  49. http://www.haskell.org/mailman/listinfo/haskell
  50. http://sequence.complete.org/
  51. http://planet.haskell.org/
  52. http://sequence.complete.org/node/feed
  53. http://haskell.org/
  54. http://haskell.org/haskellwiki/HWN/es
  55. http://haskell.org/haskellwiki/HWN
  56. http://www.cse.unsw.edu.au/~dons/code/hwn

More information about the Haskell mailing list