title: Wrapping a DLL import in a module in F#
body: <p>I'm attempting to create a "wrapper" module for some windows api functions from <code>user32.dll</code>. I'm still learning F# so I'm rather fuzzy on how inheritance and polymorphism works in F# and how to apply that to this situation. </p>
  
  <p>I have this module: </p>
  
  <pre><code>module MouseControl =         
      [&lt;DllImport( "user32.dll", CallingConvention = CallingConvention.Cdecl )&gt;]
      extern void ShowCursor(bool show)
  
      [&lt;DllImport( "user32.dll", CallingConvention = CallingConvention.Cdecl )&gt;]
      extern void internal mouse_event(int flags, int dX, int dY, int buttons, int extraInfo)
      let MouseEvent(flags, dX, dY, buttons, extraInfo) = mouse_event(flags, dX, dY, buttons, extraInfo)
  </code></pre>
  
  <p>My goal is to be able to "hide" the <code>mouse_event</code> function from other code that uses this module and instead expose that function as <code>MouseEvent</code>. With this code <em>both</em> <code>mouse_event</code> and <code>MouseEvent</code> are currently available to code that calls this module. How do I hide <code>mouse_event</code> where it's private to the module?</p>