Comment by Simon Peyton Jones in an interview:
People often dislike static type systems because they’ve only met weak ones. A weak or not very expressive type system gets in your way all the time. It prevents you from writing functions you want to write that you know are fine. … The solution is not to abandon the type system but to make the type system more expressive.
In particular, he mentions Haskell’s polymorphic types and type inference as ways to make strong static typing convenient to use.
This is why I’ve been saying since discovering and using Standard ML, OCaml, and Haskell in 1994. Yes, that was 20 years ago. Before that, I could not tolerate statically typed languages, and thought Lisp was the greatest thing. I groaned when Java came out in 1995 because I believed it would set back the cause of statically typed languages for decades. I was right, apparently, because why is the annoyance of bad type systems even still a topic today?
To play devil’s advocate, a challenge with expressive static type systems is one of complexity. If a static type proving the correctness of a program is as complicated or more so than its dynamic counterpart then what have you gained?
One example would be some of the BankOCR kata solutions where the type definitions dwarf the implementation.
https://www.infoq.com/presentations/Types-Tests/?itm_source=infoq&itm_campaign=user_page&itm_medium=link