title: What is the difference between `stack clean` and removing the `.stack-work` directory?
body: <h3>1 Context</h3>
  
  <p>I am involved in a Haskell project that involves lots of C-bits and FFI. So I find myself frequently running and re-running commands like</p>
  
  <pre><code>$ stack build
  $ stack build --force-dirty
  $ stack clean
  $ rm ./.stack-work
  </code></pre>
  
  <p>over and over in order for the C-bits to be linked properly to the Haskell bits. Put differently, sometimes things just work when running <code>stack build</code>, and sometimes they don't (in which case I'm forced to cycle through the above commands over and over until my project builds properly).</p>
  
  <p>This means I don't have a proper understanding of how <code>stack</code> (through <code>ghc</code>) assembles the C-bits before assembling the Haskell bits.  So here is one question to help me start clearing up my confusion:</p>
  
  <h3>2 Question</h3>
  
  <p>Are there any noteworthy difference between running <code>stack clean</code> and deleting the contents of the <code>.stack-work</code> directory? Are there cases where deleting the <code>.stack-work</code> directory is needed as a good precaution to ensure that you are actually running a clean build?</p>