Thursday, September 30, 2010

Slides from my High-Performance Haskell talk at CUFP

Here are my slides for tomorrow morning's High-Performance Haskell tutorial:

(There's a downloadable PDF version, too, if you find that an easier format to deal with.)

I've also posted a Git repository of the slide source code, in case anyone would like to use the slides for their own purposes.


  1. Thanks for providing the PDF download as well!

  2. Another big thanks for providing a straight-PDF download :-)


  3. Very nice Johan! This is a great tutorial.

    One small little detail Simon Marlow explained to me at ICFP, seq x y doesn't actually guarantee x is evaluated before y (pseq does that), but rather just that if x diverges (e.g., throws an exception, goes off into an infinite loop, etc.), then seq x y will diverge as well.

    Obviously this still means that x must be evaluated (which gives the desired strictness guarantees), but it doesn't imply an ordering with respect to y. For example, if the compiler knows that y is needed as well, it could choose to evaluate y first, x second, and finally return y.

    It may seem that there would be a problem if something went wrong with y as there won't be an opportunity for something to go wrong with x as well, but this is really still fine as the semantics just say if x is bad, then seq x y will also be bad (not that it will be bad through x).

  4. Anonymous,

    That's absolutely correct. I'm aware of the difference between seq and pseq, but decided to not bring it up in hope of avoiding confusion.

  5. Great presentation, Johan. It really helped me understand the factors which go into latency and memory performance of Haskell applications.