on master help sign in
cosmetic: move things around, add section headers
2b4a0e3Evan Czaplicki
src/Optimize/Environment.hs+30−15
@@ -1,22 +1,41 @@
1{-# OPTIONS_GHC -Wall #-}
1{-# OPTIONS_GHC -Wall #-}
2{-# LANGUAGE OverloadedStrings #-}
2{-# LANGUAGE OverloadedStrings #-}
3module Optimize.Environment
3module Optimize.Environment
4− ( Optimizer, run
4+ ( Optimizer, run
5− , Env
5+ , Env
6− , getVariantDict
6+ , getVariantDict
7− , getHome
7+ , getHome
8− , getTailCall, setTailCall
8+ , getTailCall, setTailCall
9− , freshName
9+ , freshName
10+ )
10− ) where
11+ where
11
12
12import qualified Control.Monad.State as State
13import qualified Control.Monad.State as State
13−import qualified Data.Text as Text
14+import Data.Monoid ((<>))
14import Data.Text (Text)
15import Data.Text (Text)
16+import qualified Data.Text as Text
15
17
16import qualified AST.Module.Name as ModuleName
18import qualified AST.Module.Name as ModuleName
17import qualified Optimize.DecisionTree as DT
19import qualified Optimize.DecisionTree as DT
18
20
19
21
22+
23+-- ENVIRONMENT
24+
25+
26+data Env =
27+ Env
28+ { _hasTailCall :: Bool
29+ , _uid :: Int
30+ , _variantDict :: DT.VariantDict
31+ , _home :: ModuleName.Canonical
32+ }
33+
34+
35+
36+-- OPTIMIZER
37+
38+
20type Optimizer a =
39type Optimizer a =
21 State.State Env a
40 State.State Env a
22
41
@@ -26,12 +45,8 @@ run variantDict home optimizer =
26 State.evalState optimizer (Env False 0 variantDict home)
45 State.evalState optimizer (Env False 0 variantDict home)
27
46
28
47
29−data Env = Env
48+
30− { _hasTailCall :: Bool
49+-- HELPERS
31− , _uid :: Int
32− , _variantDict :: DT.VariantDict
33− , _home :: ModuleName.Canonical
34− }
35
50
36
51
37getVariantDict :: Optimizer DT.VariantDict
52getVariantDict :: Optimizer DT.VariantDict
@@ -59,5 +74,5 @@ freshName :: Optimizer Text
59freshName =
74freshName =
60 do (Env htc uid vd home) <- State.get
75 do (Env htc uid vd home) <- State.get
61 State.put (Env htc (uid + 1) vd home)
76 State.put (Env htc (uid + 1) vd home)
62− return (Text.append "_p" (Text.pack (show uid)))
77+ return ("_p" <> Text.pack (show uid))
63
78