> Folks who prefer dynamicly-typed languages are generally of the opinion that working with compiler error messages sucks.
This is not at all why I prefer dynamically typed languages. Try doing some JSON parsing in Haskell for a non-trivial payload (like something with nested objects) without wanting to pull your hair out.
I can't tell from those examples if it's good or not, the json shown is all trivial 1 level deep json that you rarely encounter in real life. How it handles nested objects and array, deeply nested objects and arrays is what I'm interested in. Not the ability to handle a Point payload. I know in dynamic language it's typically a 1 liner. I'll endure a little more work than that, but my experience from Haskell was quite painful.
That's much less a function of static typing, and much more a function of immutability. There are programming constructs to help with that (such as lenses, mentioned in another comment), but there's also nothing stopping you from writing very compact statically typed code that mutates a value three levels down in a JSON tree, if you had a mutable data structure.
This is not at all why I prefer dynamically typed languages. Try doing some JSON parsing in Haskell for a non-trivial payload (like something with nested objects) without wanting to pull your hair out.