title: What makes two type expressions in Haskell equivalent?
body: <p>So I was asked whether these 3 type expressions where equivalent in Haskell:</p>
  
  <pre><code>τ1 = (a -&gt; a) -&gt; (a -&gt; a -&gt; a)
  τ2 = a -&gt; a -&gt; ((a -&gt; a) -&gt; a)
  τ3 = a -&gt; a -&gt; (a -&gt; (a -&gt; a))
  </code></pre>
  
  <p>if I take away the parenthesis I'm left with this</p>
  
  <pre><code>τ1 = (a -&gt; a) -&gt; a -&gt; a -&gt; a
  τ2 = a -&gt; a -&gt; (a -&gt; a) -&gt; a
  τ3 = a -&gt; a -&gt; a -&gt; a -&gt; a
  </code></pre>
  
  <p>So it's obvious to me that they are all different from each other. However, according to the question, these two answers are wrong:</p>
  
  <pre><code>τ1 !≡ τ2 !≡ τ3 !≡ τ1
  τ1 !≡ τ2 ≡ τ3
  </code></pre>
  
  <p>So I'm a bit confused right here, what would be the right answer and why?</p>