Thanks for posting that, I got a lot out of that, even if the OP might not have.
-- Hindley-Miller inference is a necessity in ML style languages, as the type system would end up obfuscating the code if there was no inference. His arguments about losing the redundancy of declared types in the presence of inference is avoided by following best practices (always declaring the types of module level functions unless the type is obvious (eg. field accessors)).
-- I'm not sure what is meant about pattern matching being type coercion in disguise
-- Having generic interfaces for monads, applicative functors, foldables etc. in the standard libraries is no different from having generic interfaces for Iterables, Lists, Sets, Arrays, Maps etc. in the collections implementation in the standard library, they're just at a higher level of abstraction. It's a hell of a lot easier than having different incompatible syntactic constructs for lists, streams, optionals, exceptions, futures etc.
The section about tail call elimination being the defining characteristic of "functional languages" really struck a note though and in general I agreed with his core points.