1{-# OPTIONS_GHC -Wall #-}
2{-# LANGUAGE OverloadedStrings #-}
3module Optimize.Environment
8 , getTailCall, setTailCall
13import qualified Control.Monad.State as State
14import Data.Monoid ((<>))
15import Data.Text (Text)
16import qualified Data.Text as Text
18import qualified AST.Module.Name as ModuleName
19import qualified Optimize.DecisionTree as DT
28 { _hasTailCall :: Bool
30 , _variantDict :: DT.VariantDict
31 , _home :: ModuleName.Canonical
43run :: DT.VariantDict -> ModuleName.Canonical -> Optimizer a -> a
44run variantDict home optimizer =
45 State.evalState optimizer (Env False 0 variantDict home)
52getVariantDict :: Optimizer DT.VariantDict
54 State.gets _variantDict
57getHome :: Optimizer ModuleName.Canonical
62getTailCall :: Optimizer Bool
64 State.gets _hasTailCall
67setTailCall :: Bool -> Optimizer ()
70 State.put (env { _hasTailCall = bool })
73freshName :: Optimizer Text
75 do (Env htc uid vd home) <- State.get
76 State.put (Env htc (uid + 1) vd home)
77 return ("_p" <> Text.pack (show uid))
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list