I just never get tired of watching SPJ talk. He has an amazing ability to explain complex ideas in a meaningful way, not to mention his obvious natural enthusiasm for the subject.
It's also great to attend any talk where he's in the audience, because he always finds a way to ask questions which intentionally create opportunities for the speaker to look better by diving off into some interesting subtopic or area of technical detail that they've overlooked. A real talent.
SPJ also writes amazing papers. He always has a novel, practical idea, and he explains it clearly. For example, here's a paper he co-authored on Software Transactional Memory in Haskell:
Notice the care taken to explain why STM is important, and its advantages over traditional locking (ease of use and composability). There's also two great new theoretical tidbits in this paper, the 'retry' and 'orElse' operators, which significantly expand the power of STM.
SPJ's good example has filtered throughout most of the Haskell community by now. I love programming in Haskell because it gives me an excuse to read these really cool papers (and it stretches my brain until I understand them).
Well, no. Because the distance, especially the idiomatic distance, between C and Java is much more than the distance between F# and Ocaml. The core languages of both are essentially equivalent. Ocaml and F# have diverged a fair bit in their fringes/exotic features (I can go into this in more detail) but if the bulk of your code use the more humdrum features then going between the two is trivial.
A more apt analogy would be to consider two languages that extend C in different ways but for which the core of C can be used in both with almost no modification (D & C++?). I suppose a python/jython/ironpython comparison would be more accurate.
p.s. with respect to grandparent, I don't subscribe to the philosophy of casting everything in terms of winner take all wars.
I wonder if there'll be any effect from the fact that ML is now going to be the language used in CMU's intro CS course. They produce quite a few CS students, so there will be a cohort with at least basic familiarity with ML.
I play around with Haskell quite a bit, but not so much ML. Do you know why ML won out at CMU?
I'm reading Cousineau's "The Functional Approach to Programming", which is based on ML, and I end up just translating most things into Haskell--the syntax feels much cleaner to me.
As far as research goes, CMU and Princeton are (as far as I know) the two ML strongholds in the US, with functional-programming research at most other departments dominated by Haskell. So I imagine the faculty were in favor of ML. The new course (http://www.cs.cmu.edu/~15150/) is being taught by Robert Harper, author of the book Programming in Standard ML (http://www.cs.cmu.edu/~rwh/introsml/).
Haskell is the language in which the lion's share of pure functional programming language research is done. So it is "leading" in the sense of "being the first place new ideas are tried".
Haskell has taken functional purity and ran with it. It's proof that you can eliminate side effects (sans the sin bin) and still actually get things done. The benefits of this can be seen in the papers written by SPJ, Wadler, etc. Moreover some features from Haskell/FP have influenced the mainstream programming community (Java generics).
As far as I know Erlang is not purely functional, nor does it try to be. On top of that, I think Erlang's emphasis is more on the actor model / message passing than it is on functional programming. That's my take at least.
E.g. Clean. And perhaps Curry. (Though Curry is logical-functional and nowadays compiles down to Haskell.)
There are also Spreadsheets, which are also purely functional, and even more popular to say the least but not leading. (The problem is that you can not define your own functions in Spreadsheets (without using imperative languages like Visual Basic).)
I would love a spreadsheet where the functions could be written in Lisp (or something less dysfunctional than spreadsheetese). And also one where a cell could contain any value (range of cells, functions...)
It's also great to attend any talk where he's in the audience, because he always finds a way to ask questions which intentionally create opportunities for the speaker to look better by diving off into some interesting subtopic or area of technical detail that they've overlooked. A real talent.