The single-argument case is elegant, and the multiple-argument case is awful.<p><pre><code>    var newScore = add(7, validateScore( double(person.score) ))
</code></pre>
becomes<p><pre><code>    var newScore = person.score
      |&gt; double
      |&gt; score =&gt; add(7, score)
      |&gt; validateScore
</code></pre>
This is very Forth-like.  Operands get pushed on the stack, and operators take from the stack and push results back. In Forth, there&#x27;s no operator precedence and no parentheses; it&#x27;s pure reverse Polish.<p>Why not go all the way to pure RPN?<p><pre><code>     7 person score . double ValidateScore add newScore = 
</code></pre>
See how it simplifies the syntax?  Of course, you have to know how many arguments each function takes.<p>Do we really want to go down this route?  It&#x27;s all syntax; it doesn&#x27;t add any capability.  As an extension to an existing language, it&#x27;s likely to produce a mess.<p>Mixing functional and imperative notations is a problem.  LISP is all nested parentheses, and that bothered a lot of people. Forth eliminates all the parentheses, which bothered different people.  Python was pure imperative, (&quot;lambda&quot; went in over major objections) and is gradually getting more functional features, but they don&#x27;t fit the syntax well.