Advertisement
Guest User

Untitled

a guest
Mar 29th, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module ValuesBy where
  2.  
  3. import Data.List
  4.  
  5. data Map key value = Map[(key,value)]
  6.  
  7. get :: Eq k => k -> Map k v -> Maybe v
  8. get k mapt @ (Map map') = let index = contains k mapt
  9.             in if index >= 0 then (Just (snd (map' !! index)))
  10.                 else Nothing
  11.  
  12. contains :: Eq k => k -> Map k v -> Int
  13. contains k (Map map') = getValue (elemIndex k (fst (unzip map')))
  14.  
  15. getValue :: Num a => Maybe a -> a
  16. getValue (Just a) = a
  17. getValue Nothing = -1
  18.  
  19.  
  20.  
  21. put :: Eq k => (k, v) -> Map k v -> Map k v
  22. put pair (Map map') = Map (put' pair map')
  23.    
  24.  
  25. put' :: Eq key => (key, value) -> [(key, value)] -> [(key, value)]
  26. put' pair @ (key, value) (x:xs)
  27.    | length xs == 0 = [x,pair]
  28.    | fst x == key = pair:xs
  29.    | otherwise = x:(put' pair xs)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement