on d4e067d help sign in
elk/src/Optimize/Environment.hs
26 lines 453 B history raw
1module Optimize.Environment where
3import qualified Control.Monad.State as State
6type Optimizer a =
7 State.State Env a
10data Env = Env
11 { _hasTailCall :: Bool
12 , _uid :: Int
13 }
16setTailCall :: Bool -> Optimizer ()
17setTailCall bool =
18 do uid <- State.gets _uid
19 State.put (Env bool uid)
22freshName :: Optimizer String
23freshName =
24 do (Env htc uid) <- State.get
25 State.put (Env htc (uid + 1))
26 return ("_p" ++ show uid)