title: Packages, modules and import in Haskell
body: <p>I'm newish to Haskell.  Would someone kindly explain how code organization works in Haskell?  To date I have written everything in one big long file and tested code from GHCi.  I want to start writing tests an refactor my code into logical units.  There are bits and pieces about how to do this in lots of places, but nothing comprehensive.</p>
  
  <p>Please explain how packages, modules and the import statement work then tell me how to use them to organize code into a larger, test-driven project.</p>