title: When are brackets required for pattern matching?
body: <p>Using this code : </p>
  
  <pre><code>-- Store a person's name, age, and favourite Thing.
  data Person = Person String Int Thing
    deriving Show
  
  brent :: Person
  brent = Person "Brent" 31 SealingWax
  
  stan :: Person
  stan  = Person "Stan" 94 Cabbage
  
  getAge :: Person -&gt; Int
  getAge (Person _ a _) = a
  </code></pre>
  
  <p>to access age of stan use : </p>
  
  <pre><code>getAge stan
  </code></pre>
  
  <p>prints : 
  94</p>
  
  <p>Defining stan does not require brackets.</p>
  
  <p>However <code>getAge Person "a" 1 Cabbage</code> causes error : </p>
  
  <pre><code>&lt;interactive&gt;:60:8:
      Couldn't match expected type `Person'
                  with actual type `String -&gt; Int -&gt; Thing -&gt; Person'
      Probable cause: `Person' is applied to too few arguments
      In the first argument of `getAge', namely `Person'
      In the expression: getAge Person "a" 1 Cabbage
  </code></pre>
  
  <p>I need to use brackets : </p>
  
  <pre><code>*Main&gt; getAge (Person "a" 1 Cabbage)
  1
  </code></pre>
  
  <p>Why are brackets required in this case ? But when defining <code>stan  = Person "Stan" 94 Cabbage</code> does not require brackets ?</p>