Earlier quoted context omitted.
> How does your dynamic language tell its user an operation is invalid, based on argument type? It doesn't! That's exactly the point. If something is invalid, then it can't happen. At all.
If only. What language are you talking about, exactly? This unicorn I have to see.
Any memory-safe language? Say, Python. `[] / []` is a perfectly valid operation: its result is a raised exception misleadingly called `TypeError`. OTOH, in most typed languages, this is a genuinely invalid operation, and it can't happen at all.