> It gets pretty annoying to type annotate everything for nothing but warm fuzzies when the compiler can figure it all out for you.
This is sometimes fine for internal code, but for external interfaces you want a human to determine the interface contract you’re agreeing to, rather than the minimal set or the maximal set of types the function supports as currently-written.