> Knowing what TEDIOUS JOB GHC is doing for us helps us appreciate more the convenience of type classes.
Thanks for the link though, I think I read it a few years ago.
Without typeclasses, that simply doesn't happen. I'd say 90% or more of Haskell typeclass usage is pointless, and maybe half of what remains is simple to replace with simpler polymorphism or no polymorphism.
For instance, almost everything here:
https://wiki.haskell.org/Typeclassopedia
is replaced, in Elm, by just having an explicit module reference, so Maybe.andThen instead of andThen. No joke, that replaces essentially all of it, except some stuff that's not used that often.
To replace the non-trivial cases is going to require pattern matching, it seems. If your types change, then you are going to have to update things in multiple places.
But, like you said, it's not the end of the world. In many cases the intent will probably be clearer. Still, I'd rather have type classes than not.
But his(/her?) major complaint is valid: lack of type classes, which completely kills essential composability and generic properties of Haskell. And the module system doesn't offer MLs features to make up for it (signatures).
This means that Elm requires boilerplate for things that are elegantly handled by type classes.
You may also look at Purescript [1], a more complete Haskell inspired language compiling to Javascript.
Haskell is a complex language. So I'm not necessarily saying that Purescript is a good choice for the average developer unfamiliar with functional languages.
Elms 'lack of features' makes it easy to pick up. Especially if you aren't familiar with FP. But Elm is TOO simple.
[1] http://www.purescript.org/