Subversion

Galculator

?curdirlinks? - Rev 1

?prevdifflink? - Blame



{-# LANGUAGE FlexibleContexts #-}
{-# OPTIONS_GHC -Wall #-}

-------------------------------------------------------------------------------

{- |
Module      :  Data.Env
Description :  Value environment.
Copyright   :  (c) Paulo Silva
License     :  LGPL

Maintainer  :  paufil@di.uminho.pt
Stability   :  experimental
Portability :  portable

-}


-------------------------------------------------------------------------------

module Data.Env (
  Env,
  emptyEnv,
  fromListEnv,
  lookupEnv,
  addEnv,
  clearEnv,
  toList,
  indexes,
  values,
  delete,
  joinEnv
 ) where

import Control.Monad.Error
import Data.Map(Map)
import qualified Data.Map as Map

-------------------------------------------------------------------------------

type Env t = Map String t

-------------------------------------------------------------------------------

emptyEnv :: Env t
emptyEnv = Map.empty

-------------------------------------------------------------------------------

fromListEnv :: [(String,t)] -> Env t
fromListEnv = Map.fromList

-------------------------------------------------------------------------------

lookupEnv :: MonadPlus m => String -> Env t -> m t
lookupEnv n env =  Map.lookup n env

-------------------------------------------------------------------------------

addEnv :: String -> t -> Env t -> Env t
addEnv k t = Map.insert k t

-------------------------------------------------------------------------------

clearEnv :: Env t -> Env t
clearEnv = const emptyEnv

-------------------------------------------------------------------------------

toList :: Env t -> [(String,t)]
toList = Map.toList

-------------------------------------------------------------------------------

indexes :: Env t -> [String]
indexes = Map.keys

-------------------------------------------------------------------------------

values :: Env t -> [t]
values = Map.elems

-------------------------------------------------------------------------------

delete :: String -> Env t -> Env t
delete = Map.delete

-------------------------------------------------------------------------------

joinEnv :: Env t -> Env t -> Env t
joinEnv = Map.union

-------------------------------------------------------------------------------

 

Theme by Vikram Singh | Powered by WebSVN v2.3.3