         (==&gt; (==&gt; A B
                  C)
              C)))))
</code></pre>
<p>(wow! that’s also verbose…).</p>
<p>To simplify a little bit matters, let’s now suppose we have the types <code>A</code> and <code>B</code> implicit (we’ll see later how to make them <em>parameters</em>), so we drop the first two <code>lambda</code>’s and get for the pairing function:</p>
<pre><code class="language-clojure">(lambda [x A]
    (lambda [y B]
       (lambda [C :type]
           (lambda [z (==&gt; A