[project @ 1996-01-11 14:06:51 by partain]
[ghc-hetmet.git] / ghc / compiler / simplCore / SATMonad.hi
1 {-# GHC_PRAGMA INTERFACE VERSION 5 #-}
2 interface SATMonad where
3 import CoreSyn(CoreBinding, CoreExpr)
4 import Id(Id)
5 import Maybes(Labda)
6 import PlainCore(PlainCoreExpr(..))
7 import SplitUniq(SplitUniqSupply)
8 import UniType(UniType)
9 import UniqFM(UniqFM)
10 infixr 9 `thenSAT`
11 infixr 9 `thenSAT_`
12 data Arg a   = Static a | NotStatic
13 data Id 
14 type PlainCoreExpr = CoreExpr Id Id
15 type SATEnv = UniqFM ([Arg UniType], [Arg Id])
16 type SATInfo = ([Arg UniType], [Arg Id])
17 type SatM a = SplitUniqSupply -> UniqFM ([Arg UniType], [Arg Id]) -> (a, UniqFM ([Arg UniType], [Arg Id]))
18 data SplitUniqSupply 
19 data UniType 
20 dropStatics :: [Arg a] -> [b] -> [b]
21 emptyEnvSAT :: SplitUniqSupply -> UniqFM ([Arg UniType], [Arg Id]) -> ((), UniqFM ([Arg UniType], [Arg Id]))
22 getArgLists :: CoreExpr Id Id -> ([Arg UniType], [Arg Id])
23 getSATInfo :: Id -> SplitUniqSupply -> UniqFM ([Arg UniType], [Arg Id]) -> (Labda ([Arg UniType], [Arg Id]), UniqFM ([Arg UniType], [Arg Id]))
24 initSAT :: (SplitUniqSupply -> UniqFM ([Arg UniType], [Arg Id]) -> (a, UniqFM ([Arg UniType], [Arg Id]))) -> SplitUniqSupply -> a
25 insSAEnv :: Id -> ([Arg UniType], [Arg Id]) -> SplitUniqSupply -> UniqFM ([Arg UniType], [Arg Id]) -> ((), UniqFM ([Arg UniType], [Arg Id]))
26 isStatic :: Arg a -> Bool
27 mapSAT :: (a -> SplitUniqSupply -> c -> (b, c)) -> [a] -> SplitUniqSupply -> c -> ([b], c)
28 newSATName :: Id -> UniType -> SplitUniqSupply -> UniqFM ([Arg UniType], [Arg Id]) -> (Id, UniqFM ([Arg UniType], [Arg Id]))
29 returnSAT :: b -> a -> c -> (b, c)
30 saTransform :: Id -> CoreExpr Id Id -> SplitUniqSupply -> UniqFM ([Arg UniType], [Arg Id]) -> (CoreBinding Id Id, UniqFM ([Arg UniType], [Arg Id]))
31 thenSAT :: (SplitUniqSupply -> c -> (a, b)) -> (a -> SplitUniqSupply -> b -> d) -> SplitUniqSupply -> c -> d
32 thenSAT_ :: (SplitUniqSupply -> c -> (a, b)) -> (SplitUniqSupply -> b -> d) -> SplitUniqSupply -> c -> d
33 updSAEnv :: Labda (Id, ([Arg UniType], [Arg Id])) -> SplitUniqSupply -> UniqFM ([Arg UniType], [Arg Id]) -> ((), UniqFM ([Arg UniType], [Arg Id]))
34 instance Eq a => Eq (Arg a)
35