title: Creating Delegates With Lambda Expressions in F#
body: <p>Why does...</p>
  
  <pre><code>type IntDelegate = delegate of int -&gt; unit
  
  type ListHelper =
      static member ApplyDelegate (l : int list) (d : IntDelegate) =
          l |&gt; List.iter (fun x -&gt; d.Invoke x)
  
  ListHelper.ApplyDelegate [1..10] (fun x -&gt; printfn "%d" x)
  </code></pre>
  
  <p>not compile, when:</p>
  
  <pre><code>type IntDelegate = delegate of int -&gt; unit
  
  type ListHelper =
      static member ApplyDelegate (l : int list, d : IntDelegate) =
          l |&gt; List.iter (fun x -&gt; d.Invoke x)
  
  ListHelper.ApplyDelegate ([1..10], (fun x -&gt; printfn "%d" x))
  </code></pre>
  
  <p>does?</p>
  
  <p>The only difference that is that in the second one, <code>ApplyDelegate</code> takes its parameters as a tuple.</p>
  
  <blockquote>
    <p>This function takes too many arguments, or is used in a context where a function is not expected</p>
  </blockquote>