My counterperspective is that traditional markets for Haskvangelism are both tapped out (in the sense that everyone who wants to learn Haskell, under the present pedagogy, has done so) and have lost interest. Haskell as a language used to have tremendous competitive advantages against existing languages, but as time goes on, Haskell’s unique selling points (USP in marketing slang) have become ubiquitous. This wouldn’t be such of a problem if Haskell could reliably remain on the cutting edge, but Idris, Agda, have dependent type advantages, Julia has a multiple dispatch paradigm that results in massive performance advantages (among other reasons), and Haskell has not been able to profitably clone either feature of late.
In my view, the biggest asset of Haskell is the prestige associated with it. It is not in fact that hard to learn, but the fact that it’s still practical, and it has cultural connotations and associations of elite computer scientists, makes it extremely sellable to people you wouldn’t normally think of as potential Haskellers. A Cambridge graduate student on #Haskell, for instance, has been teaching people Haskell as a first language for quite some time.
The problem is, given that Haskell is in relative stagnancy (where’s the dependent types? Where’s the performance-enhancing multiple dispatch paradigm), and that the traditional recruitment bases for Haskell have been tapped out, it should be imperative to actively seek new Haskellers where they’re not normally sought.
Certain characteristics of Haskell, incidentally, make them quite useful for amateur programmers as well as new programmers; the fact that Haskell is conceptually near the cutting edge makes Haskell an ideal language to learn with (and Haskell isn’t as wedded to the pure statically-typed FP paradigm as people might think; there’s, for instance, dynamic types enabled via a library, stateful computations enabled via monads, composable objects via a library), as well as an ideal language for amateur programmers simply because Haskell code can be written more quickly (if coding is your hobby, you don’t want to spend months writing and debugging your hobby) and often with a high guarantee of both correctness and architectural sophistication; there’s quite a few start-ups done by hobbyists that can’t sell because their codebase is spaghetti code.
This is basically a supply-side approach. Haskell, right now, seems to have an exceptionally high library contributor to userbase ratio. But other languages have built excellent ecosystems using the opposite approach; Python, for instance, is used because it’s used. What would happen if a supply-side approach to Haskell could generate a much larger user-base, even if the contributor-to-user ratio drops? Could we see much better developed libraries and ecosystems?
As an example, for instance, certain people working critical Haskell resources have been in a bit (this is probably an overstatement) of trouble because they can’t find the relevant Windows specialists to accommodate their software to Windows Store. If the userbase were allowed to dumb itself down, the same problem wouldn’t be present, because Windows specialists are a commodity in other realms.
But to accommodate a lower-quality, but larger, userbase, you need a few things. First, you need improved pedagogy; it’s disappointing for me that Haskell (HaskellBook doesn’t count, it’s way too long) does not have its own equivalent of K&R The C Programming Language or Structure and Interpretation of Computer Programs. There seems to be a dearth of Haskell books that are targeted at allowing utter neophytes to computer science to produce useful programs via Haskell, in part because this would require the usage of Haskell libraries to do many practical things, and newbie books (barring Will Kurt’s Get Programming in Haskell) tend to eschew libraries, and even with GPIH, the libraries are mentioned in the end. Overall, however, there seems to be a lot of problems with Haskell pedagogy, something that the Haskell Foundation might wish to take control of (I know Hecate is moving funds to typeclasses.com and Julie Moronuki).
Second, certain libraries and tools are too painful to use, or are obsolete. GUI is not a powerful strength of Haskell, for instance. For accessing a Windows filesystem via GUI, tinyfiledialogs is obsolete, but still crucial. Neophyte coders, likewise, are unlikely to take kindly to cabal or stack’s config-file based setups.
Third, the Windows support is an utter mess. getLine has been broken for years, and I’ve gone to using Haskeline just to get around getLine (winio seems to have broken getChar as well in the latest version). The last time I tried to contact Haskell Foundation about moving toward newbies and amateurs as a target audience, I got the line that tooling and ecosystem simply wasn’t mature enough, and I have to agree. The VSC-HLS experience is pretty much easy mode for Windows users, hell, type suggestions make the type system practically dynamic, but Haskelly presents quite a few useful GUI additions (load GHCI, runfile), it’s obsolete, and requires hacking if you don’t want to work with Stack.
I’m just quite delighted to meet a Haskell Foundation ED who seems to share some of my views regarding how the Haskell community can move forward. I apologize for the rant, but I just saw an opportunity to try to reiterate my views. Some of the people I’ve talked to seem enthusiastic about the same approach, but it’s incredible to find HF ED in partial accord.