<div dir="ltr">#10820 on Trac [1] and D1200 on Phabricator [2] discuss adding the capababilty<br>to Template Haskell to detect which language extensions enabled. Unfortunately,<br>since template-haskell can't depend on ghc (as ghc depends on template-haskell),<br>it can't simply re-export the ExtensionFlag type from DynFlags to the user.<br><br>There is a second data type encoding the list of possible language extensions in<br>the Cabal package, in Language.Haskell.Extension [3]. But template-haskell<br>doesn't already depend on Cabal, and doing so seems like it would cause<br>difficulties, as the two packages can be upgraded separately.<br><br>So adding this new feature to Template Haskell requires introducing a *third*<br>data type for language extensions. It also requires enumerating this full list<br>in two more places, to convert back and forth between the TH Extension data type<br>and GHC's internal ExtensionFlag data type.<br><br>Is there another way here? Can there be one single shared data type for this<br>somehow?<br><br>[1] <a href="https://ghc.haskell.org/trac/ghc/ticket/10820">https://ghc.haskell.org/trac/ghc/ticket/10820</a><br>[2] <a href="https://phabricator.haskell.org/D1200">https://phabricator.haskell.org/D1200</a><br>[3] <a href="https://hackage.haskell.org/package/Cabal-1.22.4.0/docs/Language-Haskell-Extension.html">https://hackage.haskell.org/package/Cabal-1.22.4.0/docs/Language-Haskell-Extension.html</a><br></div>