Slides from last night’s BayFP talk
May 9th, 2008 by Bryan O'Sullivan
I had a lot of fun talking about concurrent and parallel programming last night. Thanks to Keith Fahlgren for organising the event, to Twitter’s Alex Payne for making space available, and to everyone who turned up and asked questions.
With any luck, Keith will have the video of the talk up in a few days. I spoke for about 45 minutes, and took questions afterwards for a further 75 (really!). The atmosphere was great, and the questions that followed very engaging.
I’ve posted the slides from the talk to Slideshare.
If you prefer, or Slideshare acts balky (unfortunately common), you can download the slides in one of several offline formats:
- Apple Keynote
- Powerpoint (zipped)
They’re CC-licensed, so have fun using them for your own purposes.
(Oh, and credit for the Haskell logo in the slides is due to Ketil Malde.)

I’m afraid that your first example of seq on slide 15 is silly. (x `seq` x) always means exactly the same thing as x alone.
It’s important to remember that (x `seq` y) is an expression which *when evaluated* will evaluate x up to determining the top level constructor before resulting in y.
Then of course, if you’re thinking of replacing x with (x `seq` x), evaluating x already causes x to be evaluated, so there’s no point in doing so.
Yes, it was a contrived example. Mea culpa.
I’m probably suffering from too many years of strict evaluation: how does “map f xs `using` parList strat” on slide 23 work? Thanks.
I really enjoyed your talk last night, Bryan. You covered a lot of interesting material very clearly and addressed some significant questions I’d had about the advantages and mechanisms for using functional programming in multicore and massively parallel environments.
I’m sorry I couldn’t stay after to chat (I was late for a dinner already!), but I’m looking forward to the book.
egl,
The “using” function takes the thing on the left, and evaluates it with the strategy on the right. So “map f xs” is a list (lazy, not evaluated until the whole expression is forced), and evaluates it using the “parList strat” strategy. Meaning that when that expression is forced, it will get evaluated in parallel.
Here’s the link to the video: http://www.bayfp.org/blog/2008/05/17/video-and-slides-from-bryan-o%e2%80%99sullivans-talk/
Thanks again for speaking!
[...] – I’ll be talking about “Concurrent and Multicore Haskell”, drawing heavily on Bryan O’Sullivan’s talk to the BayFP user group last [...]