Some FHPC and Haskell Symposium highlights

composition.al 2013-10-01

I just got home from a great week in Boston, where I attended this year’s ICFP and affiliated events. I presented our first paper on LVars at the FHPC workshop on Monday, and I also managed to catch a bit of the Haskell Symposium on Monday and Tuesday.

At FHPC, my talk went well, and I spoke with various people who are interested in using LVars. One person I spoke with even wants to implement LVars in Erlang! (It’d be amazing if that could happen before I head to RICON next month.) Although I didn’t take a lot of notes during FHPC, I scribbled down a few things during Matthew Fluet’s interesting invited talk on Manticore:

  • “Implicitly-threaded parallelism” just means hints to the compiler or runtime that a computation is a good candidate for parallel execution, as opposed to the explicit “Hey, launch a thread here!” that you see in, for instance, Java.
  • “Not all memory is equally close to a CPU.”
  • If you’re only benchmarking up to twelve or so cores, you’ll be left with a “false sense of scalability”! (We’ve certainly been guilty of this with LVar stuff.)
  • Controlling mutable state is a challenge. In fact, the only way to write stateful programs in Manticore is sequentially! Hmm.

At the Haskell Symposium, “Haskell and GHC: Too Big to Fail?” was a lively and highly quotable panel discussion:

  • “The strength and weakness of Haskell is GHC and its community.” — Bastiaan Heeren
  • “If I’d known then [when we started working on Fortress] what I know now, then instead of trying drag Fortran one-tenth of the way toward Haskell, I’d try to drag Haskell one-tenth of the way toward Fortran.” — Guy Steele
  • On GHC becoming the single de facto implementation of Haskell: “I’ve ceased to worry about it. Instead, the new plan is to make the language and compiler as open as possible.” — Simon Peyton Jones
  • “The thing about laboratories is, that’s a place where you test things to destruction.” — SPJ
  • “The thing that I’ve learned from Guy is, cling to a few core principles and be willing to change everything else.” — SPJ
  • In the context of a discussion on how to make Haskell more accessible, Bryan O’Sullivan noted that Node.js makes their programming model seem accessible by essentially lying about how hard it is. “You’re constructing chains of continuations by hand! It’s a programming model that is so difficult that we basically imported monads into Haskell in order to deal with it.”
  • An insightful audience comment from Jonathan Fischoff: There’s a problem with the way we try to sell Haskell. Don’t try to talk about correctness (versus, e.g., PHP) — talk about scalability to multicore (versus, e.g., PHP)!
  • “There are a lot of us here at ICFP who aren’t from the academic world and are generally here for the drinking.” — BOS
  • SPJ: The number of Haskell libraries on Hackage [5.5K] is “an astonishing outpouring of human creativity”.

I also really liked Michał Pałka’s talk illustrating a flaw in Haskell’s standard pseudorandom number generator: Consider a test that chooses two random numbers, each between 0 and 13, and compares them for equality, failing when they’re equal. We’d expect such a test to fail 1 in 14 times, but in 10,000 trials, it always passes QuickCheck! Best quotation from the talk: “As people who have tried to counterfeit Jackson Pollock paintings know, writing a good RNG is hard.”