title: Why does replacing the dollar sign ($) with parentheses in this expression leads to an error?
body: <p>I have these two expressions:</p>
  
  <ol>
  <li><p><code>foldr (-) 0 . map (uncurry (*)) $ coords 5 7</code></p></li>
  <li><p><code>foldr (-) 0 . map (uncurry (*)) (coords 5 7)</code></p></li>
  </ol>
  
  <p>The (1) works print out the result, but (2) have error says:</p>
  
  <pre><code>&lt;interactive&gt;:50:15:
      Couldn't match expected type ‘a -&gt; t0 c’
                  with actual type ‘[Integer]’
      Relevant bindings include
        it :: a -&gt; c (bound at &lt;interactive&gt;:50:1)
      Possible cause: ‘map’ is applied to too many arguments
      In the second argument of ‘(.)’, namely
        ‘map (uncurry (*)) (coords 5 7)’
      In the expression: foldr (-) 0 . map (uncurry (*)) (coords 5 7)
  </code></pre>
  
  <p>Can any one tell me what's the difference between these two? Thanks.</p>