blob: 4ca105a66c4ebadd9f036a86b15f5155cd9f4d7b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
-- Created this hs-boot file to remove circular dependencies from the use of
-- Plugins. Plugins needs CoreToDo and CoreM types to define core-to-core
-- transformations.
-- However GHC.Core.Op.Monad does much more than defining these, and because Plugins are
-- activated in various modules, the imports become circular. To solve this I
-- extracted CoreToDo and CoreM into this file.
-- I needed to write the whole definition of these types, otherwise it created
-- a data-newtype conflict.
module GHC.Core.Op.Monad ( CoreToDo, CoreM ) where
import GhcPrelude
import IOEnv ( IOEnv )
type CoreIOEnv = IOEnv CoreReader
data CoreReader
newtype CoreWriter = CoreWriter {
cw_simpl_count :: SimplCount
}
data SimplCount
newtype CoreM a = CoreM { unCoreM :: CoreIOEnv (a, CoreWriter) }
instance Monad CoreM
data CoreToDo
|