Obviously it's not part of the type system itself, but doesn't the must_use attr get pretty close?
663 karma · joined October 6, 2016
Obviously it's not part of the type system itself, but doesn't the must_use attr get pretty close?
Second, even if we granted the premise that UHC leads to less healthcare innovation, this doesn't mean that there's "infinite harm" in to people in the future. Unless you're claiming you have a crystal ball, there is absolute 0 epistemic basis on which to make this claim. For all we know, not having UHC leads to nuclear war and we all die. Or, having UHC leads to the singularity. Etc.
Third, even if we grant that there's an innovation advantage to for-profit medicine AND we grant that you can predict the future, that still doesn't mean that there's "infinite harm", precisely because "harm" is comparative. I would argue that we've picked most of the low-hanging fruit of human medicine and that the marginal utility produced by new treatments is far outweighed by the human suffering of our for-profit system.
When I book a flight through Expedia I enter a contract of carriage with the airline, not Expedia. This is a contractural matter, not just an abstract concept of "commercial relationship."
I mean, Java is pretty much the biggest ecosystem there is and it's trivial to use Java libs from Clojure, so I'm not sure this is a fair comparison.
The Go ecosystem seems pretty weak outside of the standard library. I'm not an expert, but I was trying to fix something the other week and was shocked by how few packages there were to solve my problem. The main one (which is a dep of things like k8s) is currently unmaintained.
Tooling is definitely important, so I don't want to downplay friction here, just curious about what other ecosystems do better.
Many of the issues Clojure has with the JVM are shared by regular Java apps, so I think there is motivation to improve many of these areas over time, even if it takes a bit.
Again, this is needlessly uncharitable as to what people mean when they talk about type systems, which is obviously about the capabilities of defining new types for program analysis, not that the runtime has an internal conception of types.
> Could you explain what descriptive and expressive power is missing here?
Sure! Looking at this, I have no idea what the size of side_length is, whether it's possible for it to be negative, or whether it's possible it to be null.
Of course, unless you're writing purely square based software, most domains are more complex than this. But I still think it's pretty helpful to know the properties of the parameters being passed to build your square are!
Specs/contracts are cool but ultimately don't afford the same kind of descriptive and expressive power that a static type system does.
> static types in most languages[2] don't reduce this burden much: there isn't an alternative to thorough testing.
However, there definitely is a burden about how much testing you have to write. I generally don't want to have to test every branch of my program to make sure a string doesn't slip through where an int should be or that variables are initialized and not null, etc.