title: Automatic instance deriving after declaration
body: <p>In Haskell, when defining a data type you can choose to automatically derive
  some instances, but can I defer the automatic deriving, perhaps even put it in
  another library?</p>
  
  <p>Here is an example:</p>
  
  <p>Automatic deriving in Haskell is a real time saver!</p>
  
  <pre><code>module MoneyModule where
  
  data Money = Money Int
    deriving Show
  </code></pre>
  
  <p>Now I wish to use the <code>MoneyModule</code>, but I also want a <code>Read</code> instance for <code>Money</code>:</p>
  
  <pre><code>module ExternalModule where
  
  instance Read Money where
    read = error "Can't this be done automatically instead?"
  </code></pre>
  
  <p>But I would really have preferred for it to be derived automatically, which I know ghc could have done if only the MoneyModule author had auto-derived the <code>Read</code> instance.</p>
  
  <hr>
  
  <p>I know that:</p>
  
  <ul>
  <li>It's better to fix the problem in the actual <code>MoneyModule</code> by patching it with the missing instance.</li>
  <li>That it's considered bad to have orphan instances. Instance declarations
  are preferably put in the module where either the type class or the data
  type was defined.</li>
  </ul>
  
  <p>In my case I can't follow best practices since the type class is unrelated
  to the data type. I doubt that the type class module nor the data type module
  wants to hold the instance, so therefore I'm creating a third library because in some
  applications you need the instance declaration.</p>