Rejig builders for pattern synonyms, especially unlifted ones
[ghc.git] / compiler / deSugar / DsMonad.lhs-boot
1 \begin{code}
2 module DsMonad (DsM) where
3
4 import TcRnTypes
5
6 data DsGblEnv
7 data DsLclEnv
8 type DsM result = TcRnIf DsGblEnv DsLclEnv result
9
10 \end{code}
11
12 Some notes about this boot file (from Edsko):
13
14
15 DsMonad has a (transitive) dependency on Hooks in at least two ways:
16 once through Finder, which imports Packages, which imports Hooks; but
17 that's easily solved, because Finder can import PackageState
18 instead. However, it is less obvious to me how to resolve the
19 following import cycle
20
21 - DsMonad imports tcIfaceGlobal from TcIface
22 - TcIface imports (loadWiredInHomeIface, loadInterface, loadDecls,
23 findAndReadIface) from LoadIface
24 - LoadIFace imports Hooks
25
26 (There might be still others, this is the most direct one at the moment.)
27
28 (Just to be clear, Hooks imports DsMonad because it needs the DsM type
29 for the dsForeignsHook.)
30
31 I'm sure this cycle can be broken somehow, but I'm not familiar enough
32 with this part of the compiler to see if there is a natural point to
33 do it.