Comment by the-grump

1 day ago

You missed the entire point of the strong static typing.

I don’t think I did. I am one of the very few people who have had paying jobs doing Scala, Haskell, and F#. I have also had paying jobs doing Clojure and Erlang: dynamic languages commonly used for distributed apps.

I like HM type systems a lot. I’ve given talks on type systems, I was working on trying to extend type systems to deal with these particular problems in grad school. This isn’t meant to a statements on types entirely. I am arguing that most systems don’t encode for a lot of uncertainty that you find when going over the network.

  • With all due respect, you can use all of those languages and their type systems without recognizing their value.

    For ensuring bits don't get lost, you use protocols like TCP. For ensuring they don't silently flip on you, you use ECC.

    Complaining that static types don't guard you against lost packets and bit flips is missing the point.

    • With all due respect, you really do not understand these protocols if you think “just use TCP and ECC” addresses my complaints.

      Again, it’s not that I have an issue with static types “not protecting you”, I am saying that you have to encode for this uncertainty regardless of the language you use. The way you typically encode for that uncertainty is to use an algebraic data type like Maybe or Optional. Checking against a Maybe for every field ends up being the same checks you would be doing with a dynamic language.

      I don’t really feel the need to list out my full resume, but I do think it is very likely that I understand type systems better than you do.

      3 replies →