I&#x27;ve always liked Beta&#x27;s approach to assignment, calls, and returns (whilst disliking most of the rest of its syntax, sigh).<p>Assignments work left to right, approximately like this:<p><pre><code>    (x, y) =&gt; (y, x)
</code></pre>
which swaps x and y.<p>Calls that return multiple values look like<p><pre><code>    x =&gt; sincos =&gt; (sinx, siny)
</code></pre>
and we can string together all sorts of things like this<p><pre><code>    x =&gt; sincos =&gt; sum =&gt; y
</code></pre>
Procedures looked something like<p><pre><code>    sincos(double x) {
      ...
    } returns (sinval, cosval)
</code></pre>
All this syntax is pretty approximate, but perhaps you&#x27;ll get the idea. To me, it seemed attractive in that a tuple of values flowed in at the top of a procedure, then left to right on each line, and top to bottom between lines, and finally a tuple of values is returned. Seemed like a natural sugaring of CPS style.