title: pattern matching of the form: Option{..} <-
body: <p>What is this form of pattern matching called:<code>Option{..} &lt;- ...</code>, e.g. as it is used here:</p>
  
  <pre><code>data Option = Option { cabal :: Maybe String , noStylish :: Bool }
  ...
  main = do
    Option{..} &lt;- cmdArgs defOption
    cabp &lt;- case cabal of
      Nothing -&gt; do
      ...
  </code></pre>
  
  <p>It seems to redefine <code>cabal</code> and <code>nostylish</code>. Before the pattern match <code>cabal</code> has type <code>Option -&gt; Maybe String</code> but after it has type <code>Maybe String</code>.</p>
  
  <p>This example comes from the recently uploaded package <code>cabal2ghci</code>.</p>