Sure, Haskell is a research language. Simon Peyton Jones has called it “a laboratory for types”. And for the people who really want to stretch their brains, to use those “more generalized abstractions”, that’s great. Use Haskell. Go make crazy new stuff and write papers about it.
But, we’ve just repudiated Wadler’s point even further. Haskell is not some perfect, discovered language. It’s not what aliens are using. It is not some higher form of multi-universal discourse. (Wadler: “So we may conclude it would be a mistake to characterise lambda calculus as a universal language, because calling it universal would be too limiting.”) Haskell is an invented language — or several invented languages, dialects differing by GHC version and extension.
Second, there’s nothing inherently superior about a research language. Indeed if you’re trying to build something today, you need a factory, not a laboratory. If Haskell is R&D, Elm is the product design team that needs to bring something to market. And perhaps surprisingly, Elm has found virtue in simplicity. In particular, it’s found that gratuitous abstraction and generics are harmful.
To a people building web applications, generic code is a vague hinderance, not an enlightened truth. For this sort of person, nouns like “monoid” are a trap. They’re interested in the verb: append. There’s nothing special about monads in Elm; it’s just that some types happen to have a function called andThen. Without do notation, and without the special IO type, a monad is just an interface. And without type classes, it’s just a convention.
It’s been pointed out that Haskell’s ladder of abstraction is backwards. They want you to grasp the abstract essence of a monad, and only then can you use the parser library. But most programmers just want to use the library already, and if it happens to give them intuition about a pattern they can apply elsewhere, so much the better. There’s no reason to point it out; just let it happen naturally. Let andThen be… discovered.