@@ -24,7 +24,7 @@ import Control.Monad (when)
24
24
import Control.Monad.State.Strict (State )
25
25
import Data.Default (def )
26
26
import Data.Either (lefts ,partitionEithers )
27
- import qualified Data.IntMap as IntMap
27
+ import qualified Data.HashMap.Strict as HashMap
28
28
import Data.List
29
29
(intersect , mapAccumL )
30
30
import qualified Data.Map as Map
@@ -114,7 +114,7 @@ runNormalization
114
114
-> NormalizeSession a
115
115
-- ^ NormalizeSession to run
116
116
-> IO a
117
- runNormalization env supply globals typeTrans peEval eval rcsMap topEntities session = do
117
+ runNormalization env supply globals typeTrans peEval eval rcsMap entities session = do
118
118
normState <- NormalizeState
119
119
<$> MVar. newMVar emptyVarEnv
120
120
<*> MVar. newMVar Map. empty
@@ -123,25 +123,24 @@ runNormalization env supply globals typeTrans peEval eval rcsMap topEntities ses
123
123
<*> MVar. newMVar Map. empty
124
124
<*> MVar. newMVar rcsMap
125
125
126
- runRewriteSession rwEnv (rwState normState) session
126
+ rwState <- RewriteState
127
+ <$> MVar. newMVar mempty
128
+ <*> MVar. newMVar globals
129
+ <*> MVar. newMVar supply
130
+ <*> MVar. newMVar HashMap. empty
131
+ <*> MVar. newMVar 0
132
+ <*> MVar. newMVar (mempty , 0 )
133
+ <*> MVar. newMVar emptyVarEnv
134
+ <*> pure normState
135
+
136
+ runRewriteSession rwEnv rwState session
127
137
where
128
138
rwEnv = RewriteEnv
129
139
{ _clashEnv = env
130
140
, _typeTranslator = typeTrans
131
141
, _peEvaluator = peEval
132
142
, _evaluator = eval
133
- , _topEntities = mkVarSet topEntities
134
- }
135
-
136
- rwState s = RewriteState
137
- { _transformCounters = mempty
138
- , _bindings = globals
139
- , _uniqSupply = supply
140
- , _curFun = (error $ $ (curLoc) ++ " Report as bug: no curFun" , noSrcSpan)
141
- , _nameCounter = 0
142
- , _globalHeap = (IntMap. empty, 0 )
143
- , _workFreeBinders = emptyVarEnv
144
- , _extra = s
143
+ , _topEntities = mkVarSet entities
145
144
}
146
145
147
146
normalize
@@ -155,7 +154,8 @@ normalize top = do
155
154
156
155
normalize' :: Id -> NormalizeSession ([Id ], (Id , Binding Term ))
157
156
normalize' nm = do
158
- exprM <- lookupVarEnv nm <$> Lens. use bindings
157
+ bndrsV <- Lens. use bindings
158
+ exprM <- MVar. withMVar bndrsV (pure . lookupVarEnv nm)
159
159
let nmS = showPpr (varName nm)
160
160
case exprM of
161
161
Just (Binding nm' sp inl pr tm r) -> do
0 commit comments