title: What is the type of this haskell double function composition?
body: <p><code>t2 = (\x y z-&gt; x.y.x)</code></p>
  
  <p>GHCI shows me this:</p>
  
  <p><code>t2 :: (b1 -&gt; b2) -&gt; (b2 -&gt; b1) -&gt; p -&gt; b1 -&gt; b2</code></p>
  
  <p>I can't quite grasp it how this type signature comes to be. So far I've figured that the righter-most x is basically a function which takes a <code>b2</code> and returns a <code>b1</code>, then that <code>b1</code> is the input of the middle function <code>y</code>, and outputs <code>b2</code>again? Should it not return a value of a new type <code>b3</code>or something? </p>