title: Why is the use of (>100) partial application?
body: <p>This code illustrates the use of partial application through the use of an operator section : </p>
  
  <pre><code>gt100 :: Integer -&gt; Bool
  gt100 x = x &gt; 100
  
  
  greaterThan100 :: [Integer] -&gt; [Integer]
  greaterThan100 xs = filter gt100 xs
  
  greaterThan100_2 :: [Integer] -&gt; [Integer]
  greaterThan100_2 xs = filter (\x -&gt; x &gt; 100) xs
  
  
  greaterThan100_3 :: [Integer] -&gt; [Integer]
  greaterThan100_3 xs = filter (&gt;100) xs
  </code></pre>
  
  <p>The operator section (>100) partially applies the operator to one
  of its two arguments. So the operator in this case is >
  Why is this partial application as the > operator is being applied
  to the entire Integer list ?</p>
  
  <p>How is this different from lambda expression <code>(\x -&gt; x &gt; 100)</code> which
  apparently is not partial application ?</p>
  
  <p>Taken from <a href="http://www.seas.upenn.edu/~cis194/spring13/lectures/04-higher-order.html" rel="nofollow">http://www.seas.upenn.edu/~cis194/spring13/lectures/04-higher-order.html</a></p>
  
  <p>Update : </p>
  
  <p>Thanks to answers this appears clearer.</p>
  
  <p>So here now is my understanding : </p>
  
  <pre><code>*Main&gt; :t (&gt;)
  (&gt;) :: Ord a =&gt; a -&gt; a -&gt; Bool
  </code></pre>
  
  <p>Is not applied at all as it accepts two parameters "a -> a" but they are not applied.</p>
  
  <pre><code>*Main&gt; :t (&gt;100)
  (&gt;100) :: (Ord a, Num a) =&gt; a -&gt; Bool
  </code></pre>
  
  <p>Is partially applied as a function of type "a -> Bool" is created</p>
  
  <pre><code>*Main&gt; :t (3&gt;100)
  (3&gt;100) :: Bool
  </code></pre>
  
  <p>Is evaluated to type Bool which is the return type of operator <code>(&gt;)</code> as illustrated by <code>:t (&gt;)</code></p>