<div dir="ltr"><font face="arial, sans-serif">> <span style="color:rgb(0,0,0);font-size:1em;white-space:pre-wrap">And there's not a mention in the docos that this is even a thing. </span></font><div><span style="color:rgb(0,0,0);font-size:1em;white-space:pre-wrap"><font face="arial, sans-serif"><br></font></span></div><div><span style="color:rgb(0,0,0);font-size:1em;white-space:pre-wrap"><font face="arial, sans-serif">To moderate myself ...</font></span></div><div><span style="color:rgb(0,0,0);font-size:1em;white-space:pre-wrap"><font face="arial, sans-serif"><br></font></span></div><div><font face="arial, sans-serif"><span style="color:rgb(0,0,0);font-size:1em;white-space:pre-wrap">There's one example pattern sig with explicit `forall`s, and it's wrt existentials/GADTs. </span><a href="https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/pattern_synonyms.html?highlight=pattern%20synonym#typing-of-pattern-synonyms">https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/pattern_synonyms.html?highlight=pattern%20synonym#typing-of-pattern-synonyms</a>, bullet wrt lexically-scoped tyvars.</font></div><div><font face="arial, sans-serif"><br></font></div><div><font face="arial, sans-serif">It doesn't say you can have a dangling `forall` quantifying nothing -- indeed that you need such a thing in this case.</font></div><div><font face="arial, sans-serif"><br></font></div><div><font face="arial, sans-serif">It looks like if you want to constrain the existential, you have to declare that in the datatype, then repeat it in the sig for the pattern.</font></div><div><font face="arial, sans-serif"><br></font></div><div><span style="font-family:Arial,Helvetica,sans-serif"><br></span></div></div>