Subversion

Galculator

?curdirlinks? -

Blame information for rev 1

Line No. Rev Author Line
1 1 paulosilva  
2 {-# LANGUAGE FlexibleContexts #-}
3 {-# OPTIONS_GHC -Wall #-}
4  
5 -------------------------------------------------------------------------------
6  
7 {- |
8 Module      :  Data.Env
9 Description :  Value environment.
10 Copyright   :  (c) Paulo Silva
11 License     :  LGPL
12  
13 Maintainer  :  paufil@di.uminho.pt
14 Stability   :  experimental
15 Portability :  portable
16  
17 -}
18  
19 -------------------------------------------------------------------------------
20  
21 module Data.Env (
22   Env,
23   emptyEnv,
24   fromListEnv,
25   lookupEnv,
26   addEnv,
27   clearEnv,
28   toList,
29   indexes,
30   values,
31   delete,
32   joinEnv
33  ) where
34  
35 import Control.Monad.Error
36 import Data.Map(Map)
37 import qualified Data.Map as Map
38  
39 -------------------------------------------------------------------------------
40  
41 type Env t = Map String t
42  
43 -------------------------------------------------------------------------------
44  
45 emptyEnv :: Env t
46 emptyEnv = Map.empty
47  
48 -------------------------------------------------------------------------------
49  
50 fromListEnv :: [(String,t)] -> Env t
51 fromListEnv = Map.fromList
52  
53 -------------------------------------------------------------------------------
54  
55 lookupEnv :: MonadPlus m => String -> Env t -> m t
56 lookupEnv n env =  Map.lookup n env
57  
58 -------------------------------------------------------------------------------
59  
60 addEnv :: String -> t -> Env t -> Env t
61 addEnv k t = Map.insert k t
62  
63 -------------------------------------------------------------------------------
64  
65 clearEnv :: Env t -> Env t
66 clearEnv = const emptyEnv
67  
68 -------------------------------------------------------------------------------
69  
70 toList :: Env t -> [(String,t)]
71 toList = Map.toList
72  
73 -------------------------------------------------------------------------------
74  
75 indexes :: Env t -> [String]
76 indexes = Map.keys
77  
78 -------------------------------------------------------------------------------
79  
80 values :: Env t -> [t]
81 values = Map.elems
82  
83 -------------------------------------------------------------------------------
84  
85 delete :: String -> Env t -> Env t
86 delete = Map.delete
87  
88 -------------------------------------------------------------------------------
89  
90 joinEnv :: Env t -> Env t -> Env t
91 joinEnv = Map.union
92  
93 -------------------------------------------------------------------------------
94  

Theme by Vikram Singh | Powered by WebSVN v2.3.3