On Jan 23, 2008 5:29 AM, Simon Peyton-Jones &lt;<a href="mailto:simonpj@microsoft.com" target="_blank">simonpj@microsoft.com</a>&gt; wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

Friends<br><br>Over the next few months I&#39;m giving two or three talks to groups of *non* functional programmers about why functional programming is interesting and important. &nbsp;If you like, it&#39;s the same general goal as John Hughes&#39;s famous paper &quot;Why functional programming matters&quot;.
<br><br>Audience: some are technical managers, some are professional programmers; but my base assumption is that none already know anything much about functional programming.<br><br>Now, I can easily rant on about the glories of functional programming, but I&#39;m a biased witness -- I&#39;ve been doing this stuff too long. &nbsp;So this message is ask your help, especially if you are someone who has a somewhat-recent recollection of realising &quot;wow, this fp stuff is so cool/useful/powerful/etc&quot;.
<br><br>I&#39;m going to say some general things, of course, about purity and effects, modularity, types, testing, reasoning, parallelism and so on. But I hate general waffle, so I want to give concrete evidence, and that is what I particularly want your help with. &nbsp;I&#39;m thinking of two sorts of &quot;evidence&quot;:
<br><br><br>1. Small examples of actual code. The goal here is (a) to convey a visceral idea of what functional programming *is*, rather than just assume the audience knows (they don&#39;t), and (b) to convey an idea of why it might be good. &nbsp;One of my favourite examples is quicksort, for reasons explained here: 
<a href="http://haskell.org/haskellwiki/Introduction#What.27s_good_about_functional_programming.3F" target="_blank">http://haskell.org/haskellwiki/Introduction#What.27s_good_about_functional_programming.3F</a><br><br>But I&#39;m sure that you each have a personal favourite or two. Would you like to send them to me, along with a paragraph or two about why you found it compelling? &nbsp;For this purpose, a dozen lines of code or so is probably a maximum.
<br><br><br>2. War stories from real life. &nbsp;eg &quot;In company X in 2004 they rewrote their application in Haskell/Caml with result Y&quot;. &nbsp;Again, for my purpose I can&#39;t tell very long stories; but your message can give a bit more detail than one might actually give in a presentation. &nbsp;The more concrete and specific, the better. &nbsp;
E.g. what, exactly, about using a functional language made it a win for you?<br><br><br>If you just reply to me, with evidence of either kind, I&#39;ll glue it together (regardless of whether I find I can use it in my talks), and put the result on a Wiki page somewhere. &nbsp;In both cases pointers to blog entries are fine.
<br><br>Quite a lot of this is FP-ish rather than Haskell-ish, but I&#39;m consulting the Haskell mailing lists first because I think you&#39;ll give me plenty to go on; and because at least one of the talks *is* Haskell-specific. &nbsp;However, feel free to reply in F# or Caml if that&#39;s easier for you.
<br><br>Thanks!<br><br>Simon<br>_______________________________________________<br>Haskell-Cafe mailing list<br><a href="mailto:Haskell-Cafe@haskell.org" target="_blank">Haskell-Cafe@haskell.org</a><br><a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">

http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br></blockquote></div><br>I&#39;m still just learning haskell but maybe as a n00b I can give you some insight into what I think is important.<br><br>I will take a guess here and say most of your audience is from the object-oriented crowd. Their software engineering practices are probably entirely based upon the idea of wrapping state up in objects and passing them around. 
They&#39;re probably going to want ways to leverage these techniques without dropping everything. <br><br>I personally think it is neat that non-functional languages are starting to borrow many ideas from functional languages. C# has lambda and LINQ, java might be adding closures. Scala is functional but has access to all the goodies of the java library. Python has list comprehensions. Even c++ is going to be adding lambda expressions (which are really handy for the stl algos which are functional like themselves). 
<br><br>Error handling and QA are very important in the real world. It might not hurt to show a few simple quick check examples and cases where errors are caught at compile time. There are probably many examples in ghc development. 
<br>
<br>--<br>Ryan Dickie<br>