Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Haskell List of Tuple Search

I have a list of tuples like this:

[("username", 123), ("df", 54), ("as",2 34)]

I need to search the value based on username. I have using lookup but i need to change the value of the integer and write back to file. My logic of this is to delete the tuple and insert another new tuple value rather than change it.

Any idea how to do this ?

like image 898
nicholas Avatar asked Jun 21 '10 06:06

nicholas


1 Answers

Use Data.Map like this :

import qualified Data.Map as Map

m1 :: Map String Int
m1 = Map.fromList [("username", 123), ("df", 54), ("as",234)]

Let's replace 54 by 78 (on "df"):

m2 = Map.insert "df" 78 m1

You can use insertWith' to combine the old and new values with a function.

Here we insert 4 on "username", and 4 is added to whatever value "username" points to.

m3 = Map.insertWith (+) "username" 4 m1

If you're sure that a key is in the map, you can access its value using the (!) operator :

import Data.Map ((!))
m3 ! "username"

Which gives 127. But beware, it could raise an exception if the key isn't in the map!

For safe lookup :

Map.lookup :: Map k a -> k -> Maybe a
Map.lookup "usrname" m3

There is a typo on the key, so this returns Nothing.

like image 188
jd.k Avatar answered Oct 12 '22 23:10

jd.k