title: `deriving (Data)` vs `deriving (Generic)`
body: <p>What's the difference between these two in GHC. They seem similar in intended purpose but <code>deriving (Data)</code> has been around for a while yet <code>deriving (Generic)</code> has only been added to GHC recently.</p>
  
  <p>Is <code>deriving (Generic)</code> basically an "upgrade" to <code>deriving (Data)</code> or do the two classes have different purposes?</p>