Guest User

Untitled

a guest
May 27th, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.65 KB | None | 0 0
  1. type KeyVal a b = (a, b)
  2. type Map a b = [KeyVal a b]
  3.  
  4. test = initmap ["a","b","c"] [1,2,3]
  5.  
  6. myZip (k:ks) (v:vs) = [(k,v)] ++ myZip ks vs
  7. myZip [] [] = []
  8.  
  9. get_key (a, b) = a
  10. get_val (a, b) = b
  11.  
  12. initmap :: [a] -> [b] -> (Map a b)
  13. initmap [] [] = []
  14. initmap keys values = (myZip keys values)
  15.  
  16. find:: (Eq a) => (Map a b) -> a -> b -> b
  17. find [] key def = def
  18. find (m:ms) key def | (get_key m) == key = (get_val m)
  19. | otherwise = (find ms key def)
  20.  
  21. delete :: (Eq a) => (Map a b) -> a -> (Map a b)
  22. delete map key = [y | y <- map, (get_key y) /= key]
  23.  
  24. add :: (Eq a) => (Map a b) -> a -> b -> (Map a b)
  25. add map key value = ([(key,value)] ++ (delete map key))
Add Comment
Please, Sign In to add comment