withVars :: [(String, Integer)]
         -> (M.Map String Integer -> Maybe Integer)
         -> (Maybe Integer)
withVars vs exp = exp $ M.fromList vs
withVars :: [(String, Integer)]
         -> (M.Map String Integer -> Maybe Integer)
         -> (Maybe Integer)
withVars vs exp = exp $ M.fromList vs
withVars vs exp = exp $ M.fromList vs