Neither are types.
-
-
Replying to @unclebobmartin @jonharrop and
Um. That’s exactly what they are. Perhaps you meant to say “types are only able to prove some things about your code, and I find that less useful than others do, but I see where you’re coming from”
1 reply 0 retweets 19 likes -
Replying to @sebastiangood @jonharrop and
The type is not the proof, it is the statement to be proven by a program. In any case, expressing all necessary behaviors as types is impractical; but as tests is trivial.
3 replies 0 retweets 3 likes -
Replying to @unclebobmartin @sebastiangood and
Further, using types appropriately, has the same practical outcome as writing infinity tests, but with zero effort and zero hindrance. Where is that trade-off exactly?
2 replies 0 retweets 10 likes -
Replying to @dibblego @sebastiangood and
No, not even close. I can completely replace static types with tests. I cannot completely replace tests with static types.
2 replies 1 retweet 5 likes -
Replying to @unclebobmartin @sebastiangood and
That's definitively not true. Want me to write the code for which you will never be able to write tests?
2 replies 1 retweet 6 likes -
Replying to @dibblego @sebastiangood and
I’ve seen lots of code for which writing tests is nearly impossible. We call that legacy code. There are also behaviors that are not practically testable. E.g. fully testing the multiply operator.
2 replies 0 retweets 1 like -
Replying to @unclebobmartin @sebastiangood and
Yes, you can practically fully test the multiplication operator. It's called a proof. It's exactly what types do.
2 replies 1 retweet 4 likes -
Replying to @dibblego @sebastiangood and
We can begin with that. I’d like to see that proof.
1 reply 0 retweets 1 like -
This Tweet is unavailable.
Let's start small and relatable, then we'll pass by the multiplication operation in the future :)
Loading seems to be taking a while.
Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.