module CSPM.Evaluator.Environment (
Environment,
new, lookup, newLayerAndBind, toList,
) where
import qualified Data.Map as M
import Prelude hiding (lookup)
import CSPM.DataStructures.Names
import CSPM.Evaluator.Values
import Util.Exception
type Environment = M.Map Name Value
new :: Environment
new = M.empty
toList :: Environment -> [(Name, Value)]
toList = M.toList
lookup :: Environment -> Name -> Value
lookup env n = M.findWithDefault (panic ("lookup not found: "++show n)) n env
newLayerAndBind :: Environment -> [(Name, Value)] -> Environment
newLayerAndBind env nvs =
foldr (\ (n,v) env -> M.insert n v env) env nvs