Say I have the list [("sd", 55), ("s", 2), ("fgff", 23), ("s", 999)]. How can I find the first occurrence of ("s", v) and bind v to the associated value? So for example someFunc "s" mylist would return 2. Optimally I would be able to pattern match and do ("s", v) = ...
I am aware that I just could create a recursive function that itself uses pattern matching but I am looking for a more concise way that utilizes the already-defined functions of Haskell, like those in the standard prelude:))
CodePudding user response:
I assume you know that the entry exists in your list l. In that case you could use a list comprehension:
v = head[v | ("s", v) <- l]
Alternatively (and the way I'd prefer) there is lookup which basically interprets a list of pairs as a dictionary, with the first entry as the key and the second entry ad the corresponding value:
Just v = lookup "s" l
Note that the lookup return value is wrapped in a Maybe to handle the case that the value does not exist.
