title: Trying to understand F# active patterns, why can I do this:
body: <p>I have a <code>Dictionary</code> over which I initially iterated thusly:</p>
  
  <p><code>myDictionary |&gt; Seq.iter (fun kvp -&gt; doSomething kvp.Key kvp.Value)</code></p>
  
  <p>Later, I discovered that I could make use of the <code>KeyValue</code> active pattern, and do this:</p>
  
  <p><code>myDictionary |&gt; Seq.iter (fun (KeyValue (k, v)) -&gt; doSomething k v)</code></p>
  
  <p>Knowing that active patterns aren't some form of preprocessor directive, how am I able to substitute the <code>kvp</code> argument in the lambda for a function that decomposes it?</p>