Re: [Haskell-cafe] teaching functional programming at work

2009-01-10 Thread Warren Harris
Thank you all for your responses on this. These ideas/materials are  
very helpful. In particular, the John Harrison book looks excellent (http://www.cl.cam.ac.uk/teaching/Lectures/funprog-jrh-1996/index.html 
) -- a comprehensive and understandable introduction to all the  
concepts I had in mind. (I'm not sure what my audience's attention  
span will be though.) The WhyFP paper is also very good, although  
doesn't go into monads or types, it does a good job of illustrating  
modularity/composability.


I'll send an update if this study group gets off the ground, to let  
you all know how it worked out.


Warren___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] teaching functional programming at work

2009-01-04 Thread Paul Johnson

Warren Harris wrote:
I am seeking suggestions from the haskell cafe for teaching functional 
programming concepts to colleagues at work. 
I'd suggest starting with a couple of hours of Why Haskell talk to 
sell them on the concepts, followed by something like the the study 
group you mentioned for anyone who wants to pursue it.


If you can get them to spare the time then the video of the SPJ talk 
from last year might be a good starting point.  Failing that, try 
presenting them with some case studies of here is where Haskell (saves 
effort) / (improves modularity) in the kind of environment where you 
work.  Explain how monads are a reprogrammable semicolon and show an 
application of that.  No need to go into bind operators, just show 
what the code looks like before and after monads.


Paul.

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


[Haskell-cafe] teaching functional programming at work

2009-01-03 Thread Warren Harris
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@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe