title: Odd ghc error message, "My brain just exploded"?
body: <p>When I try to pattern-match a GADT in an <code>proc</code> syntax (with Netwire and Vinyl):</p>
  
  <pre><code>sceneRoot = proc inputs -&gt; do
              let (Identity camera :&amp; Identity children) = inputs 
              returnA -&lt; (&lt;*&gt;) (map (rGet draw) children) . pure
  </code></pre>
  
  <p>I get the (rather odd) compiler error, from ghc-7.6.3</p>
  
  <pre>
    My brain just exploded
      I can't handle pattern bindings for existential or GADT data constructors.
      Instead, use a case-expression, or do-notation, to unpack the constructor.
      In the pattern: Identity cam :& Identity childs
  </pre>
  
  <p>I get a similar error when I put the pattern in the <code>proc (...)</code> pattern. Why is this? Is it unsound, or just unimplemented?</p>