title: wierd type-error of 2 different records with a field with same name
body: <p>I have the following data structure:</p>
  <pre><code>data Exp
    = Var String
    | Unary
      { exp :: Exp 
      , op :: UnaryOp}
    | Binary
      { left :: Exp
      , right :: Exp
      , op :: BinaryOp
      }
  
  data UnaryOp = Not
  
  data BinaryOp = And | Or | Impl | Equal
  </code></pre>
  <p>And I get the following error:</p>
  <pre><code>Constructors Binary and Unary give different types for field ‘op’
  </code></pre>
  <p>But I dont get why the different types for the op make a problem. They are in records of diffrent variants. They should be independent things shouldnt they ?</p>