<i>&quot;You&#x27;re right... in that we can fudge around these things with &quot;fuzziness&quot;, but I don&#x27;t think that&#x27;s sufficient.&quot;</i><p>Well, it&#x27;s <i>been</i> sufficient.  That doesn&#x27;t mean we can&#x27;t improve on it.  My point was simply that assigning types doesn&#x27;t actually change things - it is <i>still</i> the case that every program needs to be able to interpret whatever is generated by every program you want to pipe into it, or you need some kind of translation.<p><i>&#x27;Classic case, btw: &quot;find ... -print0 | xargs -0 ...&quot;. Unless we have pervasive and dependent types, how is any formalism going to know that?&#x27;</i><p>Dependent types aren&#x27;t necessary for that.  They might be necessary for `find ... $MIGHTBEPRINT0 | xargs $MIGHTBEDASH0`<p>Edited to add - or wait, you mean the resulting command built by xargs may have a type dependent on the arguments produced by find?  That&#x27;s... messy, yeah.