Not to get off on too much of a tangent, but you may be interested in concatenative programming languages. They’re a variety of stack-based programming languages with a functional flavour, in which the default style is a sort of data pipeline. For example, in Factor[1]:<p><pre><code>    ! Just some imports.
    USING: accessors smtp ;

    ! Create a new email object.
    &lt;email&gt;

    ! That object is piped implicitly to these setter words.
    ! E.g., &gt;&gt;from: ( email new-address -- email )
    &quot;alice@example.com&quot; &gt;&gt;from
    { &quot;bob@example.com&quot; } &gt;&gt;to
    &quot;Coffee?&quot; &gt;&gt;subject
    &quot;You pick the time and place.&quot; &gt;&gt;body

    ! Pipe that object on to the “send-email” word.
    send-email
</code></pre>
Note how no local variables are necessary for simply plumbing data around—although of course you can use them if you want.<p>The weirdest thing is probably that arithmetic in most concatenative languages is written in postfix, which you may find off-putting. But it’s no worse than Lisp’s prefix notation, and has some other benefits.<p>Factor also has an excellent interactive environment; the whole thing feels like a Lispy Smalltalk.<p>[1]: <a href="http:&#x2F;&#x2F;factorcode.org&#x2F;" rel="nofollow">http:&#x2F;&#x2F;factorcode.org&#x2F;</a>