<i>&quot;almost every program has to understand (100%) the output of every other program it has to interact with.&quot;</i><p>While I mostly agree with your thesis that types could be great in the shell, I think this particular bit is incorrect in a way that undermines your argument (not, I think, fatally).  If a program&#x27;s output doesn&#x27;t match up with another program&#x27;s input, a bit of sed (and maybe some awk) will usually do the trick.  And if we added types, that would <i>still</i> be the case - output from one command would have to be the right type to be input to another.