[Haskell-cafe] teaching functional programming at work

Neil Mitchell ndmitchell at gmail.com
Sun Jan 4 09:16:21 EST 2009

Hi Warren,

I'd recommend getting them to read Why FP Matters
(http://www.cs.chalmers.se/~rjmh/Papers/whyfp.html) to tempt them,
followed by Programming in Haskell
(http://www.cs.nott.ac.uk/~gmh/book.html) to teach them the
concepts/syntax etc, possibly with Learn You a Haskell
(http://learnyouahaskell.com/) to get them familiar with GHCi and
how/where to type things. That's how I've been doing it at work, and
it seems to be working well. Real World Haskell might be a nice follow
on after they've learnt functional programming and want to do real
stuff with it.



On Sun, Jan 4, 2009 at 1:28 AM, Warren Harris <warrensomebody at gmail.com> wrote:
> I am seeking suggestions from the haskell cafe for teaching functional
> programming concepts to colleagues at work. I'm currently working on a
> project using ocaml and functional programming techniques, and am a lone
> ranger at my workplace when it comes to this sort of thing (we are primarily
> a python shop). However there seems to be a growing curiosity in functional
> programming, and I think there's a lot to be learned from from it whether
> one chooses a functional language for their next big project or not.
> But I'm a practitioner, not an academic or lecturer, and although I find the
> idea of helping my colleagues understand these concepts to be an exciting
> prospect, I'm not really sure where to start in terms of materials or
> overall direction. My sense is to form a study group (perhaps going through
> Real World Haskell together), but I'm a little afraid of assembling people
> together for a "now what?" experience. So my first question is whether this
> is even a good idea?
> Some things I think would be useful to get across are:
> - fp is more than just an exercise in avoiding assignment statements -- why
> a smart programmer should care?
> - reading knowledge of ocaml and/or haskell (even syntax, precedence and
> infix operators can be an initial stumbling block)
> - core concepts: type classes, proper tail recursion, higher-order
> functions, folds, combinators, monads, monad transformers, arrows
> - evidence that concise expression can lead to less bugs / better
> maintainability (hard to prove, but perhaps a sense can be conveyed)
> - relationship between types / theorems / programs / proofs and why this is
> important for the future of software
> Regarding this last point, my own sense has been that by leveraging a
> powerful type system such as found in ocaml or haskell has allowed me to
> achieve things I never would have been able to without it (or at least would
> have ended up with a much less elegant implementation and much more
> debugging) but many seem to find types to be either an impedance to getting
> things done quickly, or at best irrelevant. I know this is for the most part
> a religious war, but I would like my colleagues to arrive at their opinion
> from an informed perspective, which means learning that there's more to
> typeful programming than what is presented by java or c++.
> Finally, any comments on how to make the learning experience fun, engaging,
> and a positive experience would be greatly appreciated.
> Warren
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe

More information about the Haskell-Cafe mailing list