An example of where I've recently done something like this is my sparse linear algebra code. I have distinct types for column and row vectors for a matrix, so that if I want to right-multiply A with a vector, the input has to be a column vector and the output has to be a row vector. Similarly, if I want to left-multiply A with a vector, the input has to be a row vector and the output has to be a column vector.
I recall all you can eat bbqs actually resulting in weight loss the following day. But if I had a bowl of rice with them, I'd have the weight gain I feared. Moderate portions of Indian takeaway curries with Naan could keep my weight up for a few days.
That's not something I'd expect from pure calorie counting, nor do I understand what's actually going on or if it's good or bad etc. But it seemed useful to be aware of