
On Fri, Mar 3, 2017 at 10:37 AM, Richard Eisenberg
I think one of the reasons this debate continues to crop up is that there is a fundamental tension in the design of Haskell:
Haskell strives to be a) richly typed, leading to "if it compiles, it works!" b) as general as possible, leading to wide applicability of polymorphic functions
These two laudable goals work against each other. In many instances, we will have to choose between them, and different people will have different judgment calls.
This is an interesting assertion; I don't believe that these goals work against one another at all. In fact, I find that (b) leads to "if it compiles, it works" much more often than not. John De Goes goes into depth on this principle here: http://degoes.net/articles/insufficiently-polymorphic where he points out "Monomorphic code is much more likely to be incorrect than polymorphic code, because for every type signature, there are many more possible implementations.".