March 9, 2011

Haskell Weekly News: Issue 172

Welcome to issue 172 of the HWN, a newsletter covering developments in the Haskell community. This release covers the week of February 27 to March 05, 2011.

Announcements

Jasper Van der Jeugt announced the release of version 3 of Hakyll. He informs us that this is a complete re-write, and not backwards compatible.

Horvath Zoltan informed us about the 4th Central European Functional Programming School (CEFP 2011), which is to take place in Eotvos Lorand University, Budapest, Hungary, from June 14-24, 2011. "The invited lecturers are the most prominent researchers in the field in Europe, and they will present state-of-the-art functional programming techniques."

Janis Voigtlander issued a call for papers for the 20th International Workshop on Functional and (Constraint) Logic Programming (WFLP 2011) to be held in Odense, Denmark, on July 19, 2011.

Michael Hanus issued a call for papers for the 13th International ACM SIGPLAN Symposium on Principles and Practice of Declarative Programming (PPDP 2011) to be held in Odense, Denmark, on July 20-22, 2011.

Trystan Spangler released a new version (0.3.0) of hspec, with "improvements including fixing a base dependency problem, and better reporting of failed examples."

Magnus Therming released new versions of dataenc (0.14), and omnicodec (0.5). "It contains a large change to the API. The old, rather simplistic, lazy API has been removed. It has been replaced by an API based on incremental encoding/decoding. This should make the library easier to use together with left-fold enumerators..."

Rogan Creswick announced that cabal-dev 0.7.4.0 has been uploaded to hackage. "We strongly suggest that everyone upgrade to this release, since this release specifically addresses changes in Cabal-1.10 and newer, which the latest cabal-install new uses."

Frederick Ross announced a minor upgrade to haskell-pgm (0.1.2), with a minor upgrade to the library to make it work with GHC 7.

Uwe Schmidt announced an update to hxt to version 9.1.

Eric Kow announced that the date and venue for the sixth Darcs Hacking sprint has been confirmed for Paris, April 1-3, 2011.

Ian Lynagh and the GHC Team announced a new patchlevel release of GHC. "This release contains a number of bugfixes relative to 7.0.1, so we recommend upgrading."

Denis Bueno announced new releases of funsat (0.6.2) and bitset (1.1).

Michal Konecny announced version 0.3.2 of hmpfr, bindings to the MPFR arbitrary precision floating point arithmetic library. "The changes in this version are quite small but significant."

Jonathan Daugherty announced version 1.0 of the vty-ui terminal user interface library. "The vty-ui library is a complete interactive user interface development toolkit for terminal applications."

Jason Dusek announced his now bash-0.0.0, which has "types and functions for generation of Bash scripts, with safe escaping and composition of large subsets of Bash statements and expressions."

Quotes of the Week

  • lpsmith: I didn't take the time to figure out what should be done in finite cases.
  • <companion_cube> edwardk, you mean it's 2 phD/nick in average ? :) <edwardk> clearly this is why SPJ stays away, he doesn't want to dilute that metric.
  • edwardk: Haskell 98 is a laudable goal.
  • douglas-adams: I love deadlines, I especially like the swooshing sound they make as they fly past
  • kmc: the way to convert imperative code to functional is to think about what your code actually means, and then throw out most of the irrelevant details that imperative programming has forced on you
  • MonadsSuck: man, I hate it when an adjoint pair of functors get together and compose. So damn annoying
  • bwright: I don't get it everyone keeps telling me java is a safe language but it melted the plastic on my eeepc900
  • danka: you could be a monadic vampire. I hear they bleed semicolons.

Top Reddit Stories

  • ANNOUNCE: GHC version 7.0.2: From (haskell.org), scored 46 with comments. Read on reddit or the original post.
  • Greenfield Haskell: From (self.haskell), scored 36 with 188 comments. Read on reddit or the original post.
  • Patches for monad comprehensions are in and will be in the upcoming GHC 7.2 release: From (hackage.haskell.org), scored 34 with 15 comments. Read on reddit or the original post.
  • GHC 7.0.2 released!: From (haskell.org), scored 32 with 10 comments. Read on reddit or the original post.
  • Haskell on Android: From (self.haskell), scored 31 with 22 comments. Read on reddit or the original post.
  • Do you think Haskell will ever catch on?: From (self.haskell), scored 26 with 63 comments. Read on reddit or the original post.
  • hakyll 3.0 released (static site generator): From (jaspervdj.be), scored 25 with 1 comments. Read on reddit or the original post.
  • New release of cabal-dev: sandboxed, reproducible build environments for Haskell: From (haskell.org), scored 24 with 9 comments. Read on reddit or the original post.
  • News on Well-Typed, the Parallel GHC Project, and Eric Kow joins the team.: From (well-typed.com), scored 22 with 3 comments. Read on reddit or the original post.
  • Build Yourself a Bluetooth Controlled Six-Legged Robot : A Neighborhood of Infinity: From (blog.sigfpe.com), scored 21 with comments. Read on reddit or the original post.

Top StackOverflow Answers

  • Goto in Haskell: Can anyone explain this seemingly insane effect of continuation monad usage? votes: 14

    Here's a somewhat informal answer, but hopefully useful. getCC' returns a continuation to the current point of execution; you can think of it as saving a stack frame. The continuation returned by getCC' has not only ContT's state at the point of the call, but also the state of any monad above ContT on the stack. When you restore that state by calling the ...

  • How do Haskell compilers decide whether to allocate on the heap or the stack? votes: 13
    When you call a function like this
    
    f 42 (g x y)
    
    then the runtime behaviour is something like the following:
    
    p1 = malloc(2 * sizeof(Word))
    p1[0] = &Tag_for_Int
    p1[1] = 42
    p2 = malloc(3 * sizeof(Word))
    p2[0] = &Code_for_g_x_y
    p2[1] = x
    p2[2] = y
    f(p1, p2)
    
    That is, arguments are usually passed as pointers to objects on the heap like in Java, but ...
  • Quick question about Arrow operators votes: 11
    (***) :: (Arrow a) => a b c -> a b' c' -> a (b, b') (c, c')
    
    So specialize a to -> and we get:
    
    (***) :: (Arrow a) => (b -> c) -> (b' -> c') -> (b, b') -> (c, c')
    
    And that's great, except we want to, for whatever reason, take the first two arguments as a single pair instead. But that's easy, we just uncurry.
    
    Prelude ...
  • QuickCheck: defining Arbitrary instance in terms of other Arbitraries votes: 9
    I'd do it like this:
    
    instance Arbitrary C
    where arbitrary = do a <- arbitrary
                         b <- arbitrary
                         return (C a b)
    
    Although sclv's idea of using liftM2 from Control.Monad is probably better:
    
    instance Arbitrary C
        where arbitrary = liftM2 C arbitrary arbitrary 

Top StackOverflow Questions

  • Running a Haskell program on the Android OS (votes: 21, answers: 1) read
  • Goto in Haskell: Can anyone explain this seemingly insane effect of continuation monad usage? (votes: 18, answers: 2) read
  • Proving equality of streams (votes: 15, answers: 1) read
  • Rotate the first argument to a function to become nth (votes: 12, answers: 7) read
  • How do Haskell compilers decide whether to allocate on the heap or the stack? (votes: 9, answers: 2) read

About the Haskell Weekly News

To help create new editions of this newsletter, please send stories to dstcruz@gmail.com. I'm in dire need of finding good "quotes of the week". If you happen to come across any, please don't hesitate to send it along.

Until next time,
Daniel Santa Cruz

No comments: