Types: computation vs. interaction

People who think they understand something about the theory of programming languages, including me, tend to agree that what Python does is wrong. Of course, millions of happy Python users disagree and get things done with it on a daily basis. Such is life — if only they listened to the experts.

This rhetoric is tiring and old. I'm going to point out that millions of people do X, noting how pragmatic and practical they are, and then I'm going to ironically note how if only they would listen to the smaller camp of comparatively impractical, theoretical and unproductive people who don't do X.

He does the same thing down here:

However, unlike heterogeneous if statements, which are silly, heterogeneous lists could be useful. Here is a fairly exhaustive list of how various languages handle heterogeneous lists. [..] I understand it would make things like language spec and error reporting more difficult, but it should make the programming easier, if the success of languages such as Python is teaching us anything.

Another appeal to popularity to justify something suspicious, even not accounting for the undeniable popularity of Java and C# which have everything to do with their backers and little to do with their technical properties. Why do you think Rust and Go are popular?

Sure, it's a limitation that you can't readily apply a function over a list of heterogeneous things. But this same old "criticism" of "static types" (specifically, ML's) is contrived. I can't readily think of an example where I'd want to do this in practice. I've programmed hundreds of thousands of lines in Emacs Lisp and JavaScript (and Lisp) and don't remember ever doing that. That doesn't mean impredicative types aren't handy once in a while. It's just a bit of a dead horse. (And people get mired in discussing "actually, heterogeneous lists are possible with blah blah...") Can't people ever come up with something interesting that captures the imagination? Same with the if and else problem. I got 99 problems but a heterogeneously branched if-then-else ain't one.

/r/haskell Thread Link - researchblogs.cs.bham.ac.uk