Simon Peyton Jones

SE Radio 108: Simon Peyton Jones on Functional Programming and Haskell

Recording Venue: QCon 2007
Guest(s): Simon Peyton Jones
Host(s): Markus
We start our discussion with a brief look at what Haskell is and how a pure functional language is different from non-pure languages. We then look at the basic building blocks and the philosophy of the language, discussing concepts such as the lambda calculus, closures, currying, immutability, lazy evaluation, memoization, and the role of data types in functional languages. A significant part of the discussion is then spent on the management of side effects in a pure language – in other words, the importance of monads. We conclude the episode with a look at Haskell’s importance and community today.

Show Notes


Join the discussion
  • Waking up this morning I found a Gem in my RSS reader, this episode is going to be the perfect place as a starting point to reference and interest many people I know into Haskell. I discovered the world of functional programming from Episode 89: Joe Armstrong on Erlang, and was all very excited about it from the interview. I got into Erlang for a while before pitting Erlang up against Haskell and I eventually choose Haskell to be my focus and area of study. Any reasonably new person to programming seems to like Python… to which I sometimes succeed in turning them to Haskell by its sheer superiority of the functional paradigm. Also I’ve been actively supporting Haskell and SE-Radio within the Linux podcasting community on IRC and in forums for quite a while now, so I try to do my part.

    Concerning books to start off and learn Haskell, the “Programming in Haskell” book was what I used to learn the wonderful language:

    It was great timing to have this episode about my favourite language just before shipping off to University. It was a definite treat.

  • Can’t beleive it!
    This is a great podcast

    I recently started learning haskell and found out, that it is a language I *really* like.

  • This was a great podcast, again.

    Very exciting to hear extremely competent people speak with passion.

    It also was a very nice introduction / refresher about functional programming.

    But it would have been nice to make some more parallels / comparisons with Erlang.

  • another excellent podcast. I have a feeling that functional languages are starting to go mainstream or at least filter into the conscious thought of a mainstream programmer. As of yet most will not really have used functional languages but they will probably, over the next year, have started to hear about them.

    I still feel Haskell is on the academic side of things. However it was designed to consolidate research in the area from what I hear, so probably understandable that most discussion on it is academic in nature. F# was mentioned, and with it being an ML-based and un-pure functional language it might be worth having an episode on that in the future from a more “engineering” aspect rather than academic. Pureness is always somewhat academic to an engineer 🙂

    Having been motivated to look at functional languages after hearing this episode (it had been on my todo list since 2002 but I’d never got around to it) I’ve been pretty amazed at the shift in my programming thought processes. Even thinking in functional terms while still using more traditional means has made me a better designer and programmer than before. However I feel there is a much bigger step up to these languages. The incredibly concise syntax is bought at the cost of high information density… worse I think than going from old proceedural languages to Object Orientated ones. This step in itself could be limiting to the uptake of the paradigm.

    Type inference also brings you the productivity gains of dynamic languages without the pain induced by lack of a strong type system, particularly around tooling and intellisense. I think with 3.0 c# introducing many functional programming building blocks, we are going to see the start of a trend of more functional aspects being added to mainstream languages: to try to elevate functions to first class citizen constructs with the added language syntax and support that comes with such an elevation. However, with the more explicit typing needed in c# you run into issues of verbose and complicated syntax that imho adversely impacted c++ generic uptake in the past outside of it’s obvious high usage from library functions – as in, lots of people using “List<string>”, but few writing something like “IEnumerable<R> Map<T, R>(this IEnumerable<T> seq, Func<T, R> fun)” for a simple mapping implementation (using a c# example over c++ in this case).

    Thanks for another very good podcast from SE radio and a particularly eloquent guest speaker who really helped simplify some complex concepts and hopefully will have motivated more than just me to look into this exciting area of computer language advancement.

  • Listening to Simon Peyton Jones is always such a pleasure. Incredible how he’s able to be crystal clear about complex issues. Also he’s always gentle and generous too. Functional programming couldn’t have a better advocate.

    PS! Do you know where he keeps his brain at night? I’d like to steal it! (sssh!) DS.

More from this show